确保e.namedValues获得当前响应

时间:2015-08-12 01:32:49

标签: javascript google-apps-script google-sheets race-condition google-form

我正在开发一个绑定到Google表格的Google Apps脚本,并且我使用onFormSubmit()触发器传递的event object时遇到问题,可以在那里可靠地访问最新的表单答案是一个已删除的问题,其标题与当前问题相同。

如果用户删除了表单问题并创建了一个具有相同名称的新问题("问题标题"),则使用e.namedValues[ "Question Title"]访问问题响应将从旧的已删除问题中获取响应这个问题总是没有,因为问题被删除了,无法回答。

我知道我可以尝试直接从表单中获取表单回复,例如FormApp.openByUrl(SpreadsheetApp.getActiveSpreadsheet().getFormUrl()).getResponses(),但我宁愿避免这样做,因为它会大大减慢我的脚本速度,更重要的是,我的脚本会由于回复不是最近的回复(race conditions),因此不准确且有错误。

如果删除的问题与当前问题的标题相同,我可以做些什么来确保e.namedValue正在提取最新的问题?

1 个答案:

答案 0 :(得分:0)

对于具有相同名称(“问题标题”)的问题,e.namedValues[ "Question Title"]包含一个数组,其中包含从最近到最近创建的问题列出的答案。因此,数组中的最后一个元素保存对最近创建的问题的响应。

因此,要使用特定名称(“问题标题”)检索对最新创建的问题的回复,您可以使用类似的内容

e.namedValues["Question Title"][e.namedValues["Question Title"].length - 1]