我有一个谷歌表格,要求提供最多40个问题,并在#34; On form submit"事件
大部分时间我通过此代码成功引用当前提交的对var formResponse的响应,该代码获取所有响应的数组,然后是最新的响应.length-1:
var formResponses = form.getResponses();
var i = formResponses.length-1;
var formResponse = formResponses[i];
似乎当表单收集25个以上的响应时,会有一个处理延迟,脚本将运行,但响应已经以某种方式尚未添加到.getResponeses()数组中。结果是脚本再次运行旧响应。当我查看包含结果的表单和电子表格时,它已按预期更新,但事件已经触发了错误的响应......所以我想知道我是否正确引用或是否存在问题在谷歌表格方面。当我从表单中删除所有回复时,问题会暂时缓解,但一旦回复数量达到约25,就会再次出现。
感谢您的支持!
答案 0 :(得分:1)
在任何Google Apps脚本触发功能中,您最好使用传递给触发器的事件信息,从而完全避免时间问题。您的触发器将拥有自己的私人副本
例如,在附加到表单的脚本中:
function handleFormSubmission( event ) {
var formResponse = event.response;
...
}
同样,在附加到接收表单响应的电子表格的脚本中:
function handleFormSubmission( event ) {
// Array with values in the same order as they appear in the Spreadsheet.
var values = event.values;
// An object containing the question names and values from the form submission.
var namedValues = event.namedValues;
...
}