Как остановить запуск формы Google onSubmit дважды? - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть около 10 Google Scripts, которые отправляют электронные письма при отправке формы. До недавнего времени все работало нормально, но внезапно все они начали рассылать по две электронной почты для отправки любой формы. Я просмотрел журнал выполнения, и между первым и вторым выполнением всегда есть 3 секунды (выполнение сценариев занимает около 1,5 секунд каждый).

Я пытался использовать блокировку сценария (решение, которое я нашелздесь), но до сих пор не смогли остановить дубликаты писем. Я не уверен, правильно ли я это сделал.

SpreadsheetApp.flush();
     var lock = LockService.getScriptLock();
  try {
    lock.waitLock(500);
     } catch (e) {
        Logger.log('Could not obtain lock after 30 seconds.');
     }


function sendEmails() {

---rest of the code---

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Мой опыт показывает, что нежелательные или, как я их называю, ложные представления, как правило, пропускают некоторые ответы. Поэтому я внимательно посмотрел на поддельные представления, чтобы определить, есть ли какая-либо разница между первым и последующими поддельными представлениями, и я часто обнаруживал, что поддельные представления всегда содержат только метку времени. Итак, как я сказал в этом ответе , я использую следующий код, чтобы исключить ложную отправку из-за воздействия на мои функции onSubmitForm: if(e.values && !e.values[1]){return;}

0 голосов
/ 11 ноября 2019

Ваша проблема вызвана недавно обнаруженной ошибкой Google, связанной с тем, что триггеры отправки формы запускаются дважды: https://b.corp.google.com/issues/144110219

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...