2017-01-14 2 views
0

Ich habe eine Google Form, die aus verschiedenen Gründen hat mehrere Kontrollkästchen Fragen. Ich möchte schließlich eine bekannte Menge von diesen zusammengeführt werden.Verschmelzen mehrere Kontrollkästchen Antworten in Google Formulare Antwortblatt

Sobald ein Formular eingereicht wurde, dachte ich, ich könnte ein App-Skript die übermittelten Daten nehmen, kopieren Sie es auf ein anderes Blatt und füge dann die oben genannten Frage Antworten in eine einzelne Zelle CSV.

so nehmen wir folgendes Beispiel:

name: 'name' 
question1: ['a','b','e'] 
question2: [] 
question3: ['dog','cat'] 
question4: ['notMerged'] 

und kopieren Sie sie in eine andere Seite, die wie folgt aussieht:

name: 'name' 
questions: ['a','b','e','dog','cat'] 
question4: ['notMerged'] 

Ich habe für onFormSubmit den Auslöser zum Einrichten Lesen und Aussteige die Daten, aber bin nicht sicher über Dinge wie die Ergebnisse zusammenführen, in der gleichen Zeile # etc. Der Spaltenindex der Felder zu verschmelzen sind statisch, aber es wird immer eine gewisse Anzahl von ihnen, die leer sind, so dass ich tun müssen eine Nullprüfung auf jeden vor dem Beitritt.

Ich arbeite mich durch den 'Quickstart: Verwalten von Antworten für Google Formulare' Code, um zu sehen, was los ist, aber ich nicht wirklich JavaScript.

Nicht für jemanden, der das für mich zu schreiben, aber mit ein paar Hinweise helfen Sie mir in die richtige Richtung goin zu erhalten

+0

Sie können JavaScript concat() -Methode zum Verketten von Arrays verwenden. [Referenz Info Link] (http://www.w3schools.com/jsref/jsref_concat_array.asp) –

Antwort

2

Wenn Sie nicht ein etwas anderes Format auf Ihrem zweiten Blatt nichts ausmacht, können Sie tun dies ohne Skript. . Auf dem zweiten Blatt, geben Sie Ihre Header ('Fragen' und 'Frage 4' in A1 und B1 dann in A2 eingeben:

= IFERROR(JOIN("," , FILTER('Form Responses 1'!B2:D2, NOT('Form Responses 1'!B2:D2 = "")))) 

In B2 eingeben:

=iferror('Form Responses 1'!E2) 

Kopieren Sie die Formeln nach unten. Zeilen ohne Daten (noch) werden leer sein, bis Formulardaten hinzugefügt werden.

Ich habe herausgefunden, was passiert. Wenn das Formular übergeben wird, fügt es eine Zeile ein und das bewirkt, dass sich die Formeln ändern. Verwenden Sie diesen Code und es wird die Formeln auf die richtige Zeile setzen. (Entfernen Sie die alten Formeln.) Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben.

//you need to set an installable onFormSubmit trigger 
function test(){ 
    var ss=SpreadsheetApp.getActiveSpreadsheet() 
    Utilities.sleep(4000) 
    var s=ss.getSheets()[1] 
    var s1=ss.getSheets()[0] 
    var lr=s.getLastRow()+1 
    var lr1=s1.getLastRow() 
    var r="A"+lr1 
    var q="B"+lr1 
    var t="D"+lr1 
    var u="E"+lr1 
    s.getRange(lr, 1, 1, 1).setFormula("=iferror('Form Responses 1'!"+ r +")") 
    s.getRange(lr, 2, 1, 1).setFormula("= IFERROR(JOIN(\",\" , FILTER('Form Responses 1'!"+ q +":"+ t +", NOT('Form Responses 1'!"+ q +":"+ t +" =\"\") )))") 
    s.getRange(lr, 3, 1, 1).setFormula("iferror('Form Responses 1'!"+ u +")") 
} 
+0

Hey Ed, Dies ist ziemlich genau das, was ich gesucht habe. – Jon

+0

Hey Ed, schnelle Notiz - Es scheint, dass wenn das Formular übermittelt wird, eine neue Zeile eingefügt wird und das Formular auf dem zweiten Blatt die Funktion ändert. so aus einem leeren Blatt eingerichtet, wie Sie erwähnt, wenn das Formular übergeben wird und Ergebnisse zu 'Form Antworten 1' Zeile 2 gehen, die Funktionen in Zeile2 auf dem zweiten Blatt von a2, b2 usw. zu a3, b3 verschieben. – Jon

+0

Können Sie Ihr Problem etwas besser erklären? Ich kann keine Verschiebung veranlassen, wenn ein neues Formular eingereicht wird. Vielleicht verstehe ich es nicht. –