Отправка электронной почты дважды с помощью MailApp.sendEmail - PullRequest
2 голосов
/ 09 ноября 2019

Я создал скрипт приложений Google для автоматизации отправки электронных писем после отправки формы Google. Сценарий довольно прост:

function AutoConfirmation(e){
  var theName = e.values[1];
  var theEmail = e.values[2];
  var theSubject= e.values[3];
  var myEmail = "myemail@gmail.com";
  var theMessage = e.values[4];
  var subject = "Contact form response – " +  theSubject;
  var message = theMessage;
  MailApp.sendEmail (myEmail, subject,message);
}

Однако, по какой-то причине я не могу понять, каждый раз, когда форма отправляется, я получаю два мгновенных сообщения электронной почты:

  1. Имеетотправленные данные (все работает, как и ожидалось)
  2. Пусто (например, тема "Ответ формы контакта -")

Я даже начал с нуля в другой учетной записи Google, которая у меня есть, итакая же проблема происходит.

Ценю любые предложения!

1 Ответ

3 голосов
/ 09 ноября 2019

Похоже, что проблема вызвана внутренним процессом, который синхронизирует ответы формы с электронной таблицей. При некоторых обстоятельствах он вносит небольшие изменения в столбец «Отметка времени» ранее отправленных ответов формы, что вызывает повторный запуск триггеров onFormSubmit для этих строк (хотя и с незавершенными объектами событий).

Команда разработчиков все еще работаетисправления, но в то же время вы можете обойти эту проблему, отфильтровав события отправки формы, которые влияют только на столбец отметки времени. Поскольку вы можете переупорядочить столбцы в листе Form Response, лучшим способом было бы проверить, охватывает ли диапазон события только один столбец:

function onFormSubmit () {if (e.range.columnStart == e.range.columnEnd) return;

// Остальная часть вашего кода // ...}

...