Как отложить ответ Google Form на Google Sheet - PullRequest
2 голосов
/ 27 июня 2019

У меня есть форма 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. Но я ищу в очереди / задержке отправки из формы.

...