我有一个链接到电子表格的Google表单。在表单方面,我添加了一个onFormSubmit From表单触发器。
问题在于,从onSubmit发送数据到Webhook的电子表格一侧还触发了其他一些触发器,然后信息被中继到数据的最后一行。.(Triggers Zapier,webhook等)
在此过程中,所有数据全部计算完毕并中继回最后一行时,表单中可能会出现另一个提交,导致函数将中继数据输入到表单提交中的最后一行。
我需要将表单响应延迟X倍的时间,以使数据能够根据先前提交的表单完成计算。
我已经尝试过使用LockService和Utilities.sleep(20000),但是它似乎并不能阻止在定义的waitLock时间范围内提交表单。
function onFormSubmit(e)
{
try
{
var lock = LockService.getPublicLock();
// Wait for up to 30 seconds for other processes to finish.
lock.waitLock(30000);
Utilities.sleep(20000); // 20 second
var formResponses = e.response.getItemResponses();
var testInput = formResponses[0].getResponse();
//append NEW FORM URL to MAIN SPREADSHEET
var sh = SpreadsheetApp.openById("1jkvSWC1ew4mt1sEy6XX2vsc_5norWHrbOYQt5hLhwGA");
var lastRow = sh.getLastRow();//gets the last row of entered data
lastRow += 1;
sh.getRange('D'+lastRow).setValue(testInput);
// Release the lock so that other processes can continue.
lock.releaseLock();
}
catch (error)
{
// If there's an error, show the error message
return error.toString();
}
}
预期结果:延迟将表单响应添加/提交到链接电子表格的时间延长X。
实际结果:无论使用什么锁,表单都会收到一个提交,并且响应将添加到工作表的新行中。延迟是将附加信息添加到lastRow中。但是,我要寻找的是将表单中的提交排队/延迟。