可以在表单上提交'脚本运行速度比表单写入电子表格更快?

时间:2015-01-07 14:23:06

标签: forms google-apps-script

我有一个将数据发送到电子表格的表单。 我在表单上附加了一个脚本,用于在表单提交上创建日历条目,确认文档等。

有3次(可能有100个表单提交和一堆手动脚本运行)脚本已运行,但是从之前提交的表单提取的数据不是从新提交的表单中提取数据,而是从表单提交。在重新检查代码之后,我唯一可以想到的是,在电子表格“收到”新表单数据之前,“从电子表格的最后一行读取数据”命令正在执行。

这可能吗? (我原以为表单提交脚本在表单完全提交之前不会启动)

有没有办法避免这种打嗝? (我将在脚本上放一个1秒的休眠时间,以便为电子表格提供一些额外的时间以便以防万一)

由于

1 个答案:

答案 0 :(得分:0)

这肯定会发生,从表格读取和写入需要花费时间,并且这两个动作可以以不同的速度发生。

而不是使用" getLastRow()"要提取提交的数据,请使用触发器传递给您的函数的事件数据:

function onFormSubmit(e){     //e is an event object passed to the function when it is triggered.
    Logger.log(e.response);   //e.response  is a FormResponse object containing the data submitted by the user.
    Logger.log(e.response.getItemResponses()); //getItemResponses() returns all the responses in an Array, similar to what is returned by getLastRow()

}

请参阅: https://developers.google.com/apps-script/guides/triggers/events#google_forms_events https://developers.google.com/apps-script/reference/forms/form-response