Gibt es eine Möglichkeit, eine Frage im Stil "Aus einer Liste auswählen" in einem Formular mit einer Liste von Daten (z. B. in einer Tabelle) zu verknüpfen?
Dies würde bedeuten, dass neue Optionen, die der Liste in der Tabelle hinzugefügt wurden (oder wo immer es sonst möglich ist, die Liste zu hosten), automatisch als Option zur zukünftigen Auswahl im Formular angezeigt werden.
In meinem Fall würde dies bedeuten, dass die Befragten, die das Formular ausfüllen, aus der umfassenden Liste der Freiwilligen auswählen können, welche Freiwilligen bei dieser bestimmten Freiwilligensitzung anwesend waren (anstatt jeden Namen einzeln einzugeben), aber da Freiwillige sporadisch beitreten, ist dies der Fall Dies wäre äußerst hilfreich, wenn diese automatisch zu den Optionen in der Liste hinzugefügt werden könnten, anstatt jedes Mal manuell eine neue Option hinzuzufügen.
Ich habe keine Ahnung, ob dies möglich ist, aber ich würde es wirklich begrüßen, wenn jemand einen Weg vorschlagen könnte, dies zu tun.
Antworten:
Die Antwort von Tom Horwood funktioniert hervorragend, aber erst, nachdem ein wichtiger Fehler in seinem Code korrigiert wurde. Alle Verweise auf
LIST_DATA
Elemente sollten unter Verwendung des Indexj
(nichti
) erfolgen. Ich habe nicht genug Karma, um Toms Beitrag zu kommentieren.Unten ist der korrigierte Code. Ich habe auch den Namen der
LIST_DATA
Elemente geändert, damit sie etwas aussagekräftiger sind. Es zeigt auch, wie Tom vorausgedacht hatte (Lob!) Und die Möglichkeit bot, mehr als ein Formularelement mit dem Inhalt von mehr als einer Tabellenkalkulationsliste zu aktualisieren.Um zusammenzufassen, wie dies funktioniert (für diejenigen wie mich, die Google Apps Script zum ersten Mal verwenden). Ich habe im obigen Codeausschnitt auf Blattnamen und Formularfeldnamen verwiesen, um es hoffentlich verständlicher zu machen:
In der Tabelle, die Ihrem Formular zugeordnet ist:
TaskCategories
). Fügen Sie Ihre Liste der Elemente dort in die erste Spalte dieses Arbeitsblatts ein. Löschen Sie alle zusätzlichen Spalten und Zeilen auf diesem Blatt (dies kann erforderlich sein oder nicht - nicht getestet)FORMID
muss in die ID Ihres Formulars geändert werden. Die ID ist der lange Code (zwischen Schrägstrichen) in der URL-Leiste Ihres Browsers für das gewünschte Formular.LIST_DATA
Variable muss an Ihr Formular und Ihre Anforderungen angepasst werden. Sie werden feststellen, dass jedes Element inLIST_DATA
ein Tupel vonformFieldTitle
und istworksheetName
. Ersteres ist der Name des Formularfelds (das muss ein Feldtyp vom Typ "Aus Liste auswählen" sein) - im Formulareditor heißt esQuestion Title
. Letzteres ist der Name des zuvor erstellten Arbeitsblatts, das die Liste der Elemente enthält, mit denen Sie das Feld füllen möchten. Fügen Sie der Liste so viele dieser Tupel hinzu, wie Sie benötigen.Wenn Sie zur Tabelle zurückkehren, sollte ein neuer Menüpunkt mit dem Titel angezeigt werden
List Updater
. Es enthält ein Element,Update Lists
das Sie jedes Mal ausführen müssen, wenn Sie eines Ihrer Arbeitsblätter für Listen ändern. Das Formular wird entsprechend aktualisiert.Ich stelle außerdem zum Nutzen der Leser fest, dass FormRanger nicht mit den neuen Google Spreadsheets funktioniert. Das sagen die FormRanger-Entwickler auf ihrer Website. Vielleicht / hoffentlich ändert sich das in Zukunft, aber zum Zeitpunkt dieser Veröffentlichung funktioniert der obige Code für mich und ich verwende ihn in einer bereitgestellten Form für einen Client.
quelle
Sie können dies mit einem normalen Formular und einem Skript tun. Verwenden Sie Form.getItems (), suchen Sie das Element in der Schleife und dann Item.asListItem (). SetChoices (...)
Hier ist ein Beispielcode, die ich in diesem Beispiel verwendet habe , Blatt und Form
quelle
Es gibt ein Google Forms-Add-On namens Formularwerte, das zumindest eine halbautomatische Möglichkeit bietet: Wenn Sie Ihre Antworten in der Tabelle ändern, müssen Sie die Auswahlmöglichkeiten in Ihrer Antwort manuell neu ausfüllen, aber zumindest ist dies recht einfach .
quelle
Mit den regulären Google Forms ist dies nicht möglich.
Sie können jedoch mithilfe von Google Apps Script und speziell des UIService eine eigene Benutzeroberfläche erstellen . Beachten Sie jedoch, dass Sie die gesamte GUI neu erstellen müssen - Sie können keine Teile aus Ihrem vorhandenen Formular verwenden.
Alternativ können Sie den GUI Builder verwenden . Es ist ein WYSIWYG-Editor für Google Apps Script-GUIs.
Was auch immer Sie wählen, Sie sollten bereit sein, etwas zu programmieren, um das zu erreichen, was Sie wollen.
quelle
Dafür gibt es ein Skript namens FormRanger: https://docs.google.com/document/d/1YvgrxeZJNb2CBpSra1j59Mh1bVpk4vBQYLOoyVjby7A/edit?hl=de&forcehl=1
quelle
Es gibt eine Möglichkeit, die Listenaktualisierung zu automatisieren, indem Sie einen Trigger [ 1 ] [ 2 ] für festlegen
Update Lists
.Der Pfad lautet Skripteditor -> Ressourcen -> Auslöser des aktuellen Projekts
Dann
add a new trigger
. Für die angegebenen Beispiele können Sie festlegenupdatesList
, dassfrom spreadsheet
und ausgeführt werdenOn form submission
. Auf diese Weise wird die FunktiononOpen
nicht benötigt.quelle
Ja, es kann getan werden, einen guten Teil des Tages damit verbracht, die Antwort zu finden und sie dann für meine Zwecke zu entwickeln, aber es kann getan werden.
Ich brauchte ein Anmeldeformular für Freiwillige, damit die Leute mehrere Kästchen aus einer Liste von Bereichen ankreuzen können, für die sie sich freiwillig melden möchten. Daher besteht eine Frage mit mehreren Feldern darin, dass die resultierende Google-Tabelle nur alles auflistet, was sie in einer Zelle überprüft haben. Es gab 21 Freiwilligenoptionen, so dass dies eindeutig kein nützliches Format für diese Informationen wäre. Ich wollte das tun, was ich verstanden habe, um zu sagen, dass Sie es wollten. Ich wollte eine Spalte mit jeder der 21 Optionen in einer eigenen Spalte haben. Neben dem Zeitstempel (Formular generiert), dem Namen, der E-Mail-Adresse und dem Telefon befinden sich 21 Spalten mit "Ja" oder leer gelassen. Die Spaltenüberschrift ist jede Option, die sie auswählen können. Einige fragen sich vielleicht, warum sie nicht einfach 21 Fragen mit "Ja" oder "Nein" haben.
Beachten Sie zunächst, dass beim Ausfüllen eines Google-Formulars in der resultierenden Tabelle eine Zeile eingefügt wird, anstatt die Daten zur nächsten leeren Zeile hinzuzufügen. Dies bedeutet, dass alle Formeln, die sich in der Zeile befanden, nur heruntergestoßen wurden und die neuen Daten aus der Formel keine Formel zwei haben, um mit den Eingabedaten zu arbeiten. Um darüber hinaus zu kommen, habe ich der Tabelle (Arbeitsmappe) ein Blatt hinzugefügt. Ich habe Eingaben von brettathds unter http://productforums.google.com/forum/#!topic/docs/dlW6U6cHuKw verwendet und daher die folgende Formel in Zelle A1 dieses zweiten Blattes eingefügt: = ARRAYFORMULA (Blatt1! A1: A). Ich habe für jede Spalte bis Spalte E Ähnliches getan. Spalte E hat die Frage mit den 21 Kontrollkästchen.
Noch auf dem zweiten Blatt hatte Zeile 1 der Spalten FY Überschriften, die mit dem Text auf jeder Kontrollkästchenoption aus der Checkliste der Bereiche identisch waren, für die sie sich freiwillig melden möchten. Dann war Spalte Z die nächste und letzte Frage im Formular. Es war eine kurze Textfrage mit dem Titel "Zusätzliche Kommentare". Für diese Spalte habe ich die = ARRAYFORMULA (Sheet1! F1: F) verwendet. Ich habe dies als separate Frage durchgeführt, anstatt die Option "other" am Ende der Kontrollkästchen-Fragen zu verwenden, da es anscheinend keine gute Möglichkeit gab, dies zu ermitteln Daten in die Tabelle.
Nun zu dem Teil, der antwortet, wie Sie die Informationen aus der Zelle in Spalte E (in der bis zu 21 Elemente aufgelistet sein können) erhalten, um Spalten mit "Ja" oder einfach leer zu trennen. Die Formel in F2 auf dem zweiten Blatt lautet = iferror (if (Suche (F $ 1, $ E2)> 0, "Ja",)) Diese Formel prüft, ob der genaue Text in der Spaltenüberschrift (F1) gefunden wurde Wenn dies in E2 der Fall ist, wird ein "Ja" zurückgegeben. Andernfalls wird es leer gelassen.
Diese Formel, auf die in F2 verwiesen wird, ist so geschrieben (unter Verwendung von "$" über die Taste F4), dass F2 von GY in jede Zelle in Zeile 2 kopiert / eingefügt werden kann (Google Spreadsheet unterstützt das Kopieren von Formeln durch Ziehen / Kopieren nicht wie möglich in Excel, aber Sie können dies tun, indem Sie F2, dann STRG + C und dann G2: Y2 und dann STRG + V auswählen. Ich habe dann die gleiche Methodik verwendet und F2: Y2 bis F3: Y100 eingefügt.
Ich habe dann Spalte E auf dem zweiten Blatt ausgeblendet, so dass das resultierende Arbeitsblatt kompakter war (wobei der gesamte Zeilenumbruch der langen Antworten vermieden wurde).
Jetzt bin ich bereit, 99 Freiwillige über das schnelle und einfache Formular aufzunehmen, das sie ausfüllen. Durch die Verwendung der Filteroptionen oben in den Spalten konnte auch festgestellt werden, wer für welche Bereiche verfügbar war.
Eine letzte Frustration, die ich nicht gelöst habe. Ich habe einige gefälschte Formulare ausgefüllt, um meine Formeln und mein Design zu testen, und diese Zeilen dann aus der verknüpften Tabelle gelöscht. Ich hatte auch ein paar Leute, die doppelte Formulare ausgefüllt haben. Ich habe auch ihre Zeilen gelöscht. Bemerkenswert in den Produktforen ist, dass ich nicht der einzige bin, der frustriert ist zu erfahren, dass Google die Test- / Schein- / Duplikatdaten immer noch in der "Zusammenfassung der Antworten" (auf der Registerkarte "Formular" der Tabelle) verkabelt hat. Daher ist die Zusammenfassung der Antworten für die Genauigkeit unbrauchbar, wenn Zeilen gelöscht wurden, um Daten aus Test- / Schein- / Duplikatformularen zu entfernen.
Aber es ist vollbracht und ich speichere diese Notizen für das nächste Mal, wenn ich ähnliche benötige. Ich bin zuversichtlich, dass dies beim nächsten Mal problemlos in weniger als 30 Minuten erledigt werden kann.
Hoffe das hilft, lass es mich wissen, wenn du Fragen hast.
quelle