2016-06-10 4 views
-1

Ich habe den folgenden Code am Ende eines Google Form. Der erste Wert im Formular ist eine Zeichenfolge, die ich versuche, als den Namen einer Datei zu verwenden, die erstellt wird. Ich versuche nur, die Dinge zu testen, während ich gefälschte Formulare selbst übergebe. Ich weiß, dass der Auslöser selbst funktioniert, basierend auf meiner ersten Codezeile (die jetzt auskommentiert ist). Ich versuche herauszufinden, was falsch ist.Apps Skript onFormSubmit Trigger

Function onFormSubmit(e) { 
    // this line works var NewSpreadSheets = SpreadsheetApp.Create("testing"); 
    var AnswerObject = e.namedValues; 
    var DirectoryName = AnswerObject[0][0]; //toString() necessary?? 
    if (DirectoryName) { 
    var ssNew = SpreadsheetApp.create("Empty"); 
    ssNew.getRange('A1').setValue(DirectoryName); 
    } 

Edit: Wenn ich AnswerObject [ 'Verzeichnis'] [0] das gleiche passiert versuchen.

Der Code reagiert nicht auf die if-Anweisung, und nach einigen anderen Tests der Platzierung von Codezeilen, die ich kenne funktioniert es scheint, dass etwas mit meinem e.namedValues-Objekt falsch läuft. Jede Hilfe zur Fehlerbehebung wäre großartig.

+1

Der Bildschirm, auf dem Sie einen Trigger erstellen, bietet eine E-Mail-Benachrichtigung über einen Fehler. Stellen Sie es auf "sofort" ein. Die E-Mail enthält eine Zeile, in der der Fehler auftritt, und die Fehlermeldung. –

Antwort

-1

die Variable AnswerObject ist, wie Sie es ein Objekt mit dem Namen Sie nicht ein Objekt Inhalt mit einem Index zugreifen, aber mit einem Namen.
müssen Sie Verzeichnisname mit dem Namen der Frage festlegen Sie interessiert sind
zB. Eine meiner Form Frage lautet: „Name des Verzeichnisses“ so werde ich wie das Verzeichnisname gesetzt: var DirectoryName = AnswerObject["name of the directory"]
Sie sollten auch verwenden Logger.log() zu überprüfen, was passiert, wird es sparen Sie Zeit, es ist effizienter als das Schreiben von etwas in einer Tabelle
Eine letzte Sache in JS Variablen beginnen mit einem Kleinbuchstaben, es wird nicht Ihren Code brechen, aber es ist eine Konvention (gleich für "Funktion")

function onFormSubmit(e) { 
    Logger.log(JSON.stringify(e)); 
    var AnswerObject = e.namedValues; 
    Logger.log(AnswerObject); 
    var directoryName = AnswerObject[0]; 
    Logger.log(directoryName); // this is undefined as there is nothing at the index 0 
    //var DirectoryName = AnswerObject[0][0]; //toString() necessary?? 
    if (directoryName) { 
    Logger.log("in it"); // never triggered 
    var ssNew = SpreadsheetApp.create("Empty"); 
    ssNew.getRange('A1').setValue(directoryName); 
    } 
} 
+0

Das Problem ist, dass ich "e" -Werte nicht testen kann, ohne ein echtes Formular zu senden, also funktioniert das Protokollieren der Werte in der Konsole nicht. Ich habe auch im Originalbeitrag erwähnt, dass ich beide Objektmethoden ausprobiert habe. – IntegrateThis

Verwandte Themen