参考当前响应的最佳方法是什么?

时间:2013-09-12 18:48:16

标签: google-apps-script google-form

我有一个谷歌表格,要求提供最多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,就会再次出现。

感谢您的支持!

1 个答案:

答案 0 :(得分:1)

在任何Google Apps脚本触发功能中,您最好使用传递给触发器的事件信息,从而完全避免时间问题。您的触发器将拥有自己的私人副本

请参阅Understanding Events

例如,在附加到表单的脚本中:

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;
  ...
}