У меня есть форма Google, которая связана с электронной таблицей. На стороне формы я добавил триггер onFormSubmit From формы.
Проблема в том, что есть несколько других триггеров, которые запускаются на стороне электронной таблицы от onSubmit, отправляющего данные в веб-крючок, а затем информация передается в последний ряд данных .. (Триггеры Zapier, веб-крючок и т. Д.)
К тому времени, когда все данные будут полностью рассчитаны и переданы обратно в последний ряд, в течение этого процесса может поступить другая отправка из формы, в результате чего функции будут вводить ретранслированные данные в последнюю строку из представления формы.
Мне нужно отложить ответы формы на X времени, чтобы данные могли закончить вычисление из предыдущей отправки формы.
Я пытался использовать LockService и Utilities.sleep (20000), но, похоже, он не препятствует отправке форм в течение определенного периода ожидания.
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. Но я ищу в очереди / задержке отправки из формы.