2016-06-10 5 views
-1

У меня есть следующий код в конце формы Google. Первое значение в форме - это строка, которую я пытаюсь использовать в качестве имени файла, который будет создан. Просто пытаюсь проверить вещи, одновременно представляя поддельные формы. Я знаю, что сам триггер работает на основе моей первой строки кода (закомментирован на данный момент). Я пытаюсь устранить неполадки.Скрипт приложений 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); 
    } 

Редактировать: Если я попробую AnswerObject ['Directory'] [0], произойдет то же самое.

Код не отвечает на оператор if, и после некоторых других тестов размещения строк кода, которые, как я знаю, будут работать, кажется, что что-то не так с моим объектом e.namedValues. Любая помощь по устранению неполадок будет отличной.

+1

Экран, на котором вы создаете триггер, предлагает уведомление по электронной почте об отказе. Установите «немедленный». В электронном письме появится строка, на которой произошла ошибка, и сообщение об ошибке. –

ответ

-1

переменная AnswerObject, так как вы назвали ее объектом, вы не получите доступ к содержимому объекта с индексом, но с именем.
вам необходимо установить DirectoryName с именем вопроса вы заинтересованы в
например. Один из моих форм вопроса «имя каталога», так что я буду устанавливать DirectoryName так: var DirectoryName = AnswerObject["name of the directory"]
Вы должны также использовать Logger.log(), чтобы проверить, что происходит, это сэкономит ваше время, это более эффективно, чем писать что-то в электронной таблице.
Последнее, что в JS-переменных начинается с нижнего регистра, оно не нарушит ваш код, но это соглашение (то же самое для «функции»)

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

Проблема в том, что я не могу проверить значения «e», не отправляя реальную форму, поэтому регистрация значений в консоли не работает. Я также упомянул в оригинальном посте, что я попробовал оба метода объекта. – IntegrateThis

Смежные вопросы