如何延迟Google表单对Google表格的响应

时间:2019-06-27 16:19:59

标签: google-apps-script google-sheets google-form

我有一个链接到电子表格的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中。但是,我要寻找的是将表单中的提交排队/延迟。

0 个答案:

没有答案