Мне интересно, связано ли это с особенно загруженным временем для скрипта Google Apps, потому что кажется, что это связано с (случайной) задержкой обновления длины массива formResponse []. Я использую следующий код, чтобы получить последний ответ, вызванный отправкой формы:
var form = FormApp.getActiveForm();
var formResponses = form.getResponses();
var formResponse = formResponses[formResponses.length-1]; //latest response only
Logger.log('begin length: ' + formResponses.length);
Затем остальная часть моего скрипта взаимодействует с ответами в массиве formResponse[]. Иногда я замечаю, что он получил ответ раньше последнего ответа. Я могу это проверить, потому что таблица с ответами формы показывает фактический последний ответ. Мой скрипт выполняется за 5-15 секунд, поэтому у меня есть следующие строки в конце моего кода, чтобы еще раз проверить длину массива:
var form2 = FormApp.getActiveForm();
var formResponses2 = form2.getResponses();
Logger.log('end length: ' + formResponses2.length);
и в журнале я замечу, что второе на единицу больше первого (и второе значение является правильным). Я не нашел особой закономерности в том, когда это происходит, но, похоже, это происходит чаще между 7-9 часами утра по тихоокеанскому стандартному времени. На данный момент я добавил Utilities.sleep(5000)
в качестве первой строки в функцию, чтобы дать время для обновления формы, прежде чем я получу ответы, и до сих пор у меня не было n-2 ответов, что заставляет меня думать, что есть некоторые своего рода задержка, из-за которой форма записывает последний ответ после срабатывания триггера «при отправке формы».
Кто-нибудь еще сталкивался с чем-то подобным?
undefined
, поэтому я прибегнул к моему текущему методу. Я потрачу больше времени на то, чтобы заставить это работать, потому что это, безусловно, выглядит как более элегантный способ получить последний ответ. Я обновлю этот пост, когда он заработает. 16.01.2014var formResponse = formResponses[formResponses.length-1];
наvar formResponse = event.response;
, и это решило проблему! Я оставил отладочный код на несколько пробных прогонов, и он продемонстрировал, что даже несмотря на то, что мой старый метод по-прежнему не работает, обработчик событий работает просто великолепно! Спасибо! 16.01.2014