Нужен скрипт для Документов Google для автоматической отправки электронной почты

Я ищу сценарий, который я могу добавить в таблицу Google, который будет автоматически генерировать электронное письмо и включать некоторые поля в электронную таблицу.
Я создал форму Google, и у меня есть эти данные, которые отправляются в электронную таблицу Google, идея заключается в том, что когда пользователь отправляет форму, которую он отправляет, эти данные в электронную таблицу, а электронная таблица отправляет автоматическое электронное письмо.
Я нашел этот сценарий и отредактировал его, но он не работает на 4-й строке (var theEvent = e.values[1]):

function AutoConfirmation(e){
      var theirFirst = "Bill";
      var theirEmail = johndoe@example.com;
      var theEvent = e.values[1];
      var subject = "Form Submitted";
      var message = "Thank you, " + theirFirst + " for the expressed interest in our " + theEvent;
   MailApp.sendEmail (theirEmail, subject, message);
}

Разве строка 4 не должна извлекать данные из столбца 1 в моем листе Google? Это старый сценарий, и он сейчас не работает? В моем листе Google у меня есть сайт вместо события в качестве столбца, а другой - с полным заголовком. Дайте мне знать, что я здесь упустил, поскольку кажется, что это должно быть просто. Я попытался запустить это, и вот результат: снимок экрана с ошибкой, которую я получаю. Я получаю тот же тип ошибки при запуске кода, приведенного выше, поэтому я подумал, что запущу регистратор, чтобы увидеть, получу ли я что-нибудь с этим, и результат будет в снимок экрана. Щелкните ссылку, чтобы увидеть это.

2 ответа

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

Разве строка 4 не должна извлекать данные из столбца 1 в моем листе Google?

Нет. e.valuesвозвращает массив, который использует индекс, отсчитываемый от нуля. Это означает, что индекс первого столбца A -0.

Проблема:

Вы получаете ошибку:

TypeError: невозможно прочитать значения свойства undefined

Означает, что объект события (e) не определено, что означает, что вы пытаетесь запустить эту функцию вручную. Предполагается, что функции, связанные с триггером, запускаются, когда происходит соответствующее событие триггера: в данном случае, когда пользователь отправляет форму. Вам не нужно запускать его вручную.

Решение:

  • Шаг 1. Установите триггер: если вы еще этого не сделали, установите триггер вручную, следуя этим шагам, или программно, скопировав следующую функцию в связанный скрипт и запустив ее один раз:
function createOnFormSubmitTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("AutoConfirmation")
  .forSpreadsheet(ss)
  .onFormSubmit()
  .create();
}
  • Шаг 2: отправьте форму!: После установки триггера, когда пользователь отправляет форму, прикрепленную к вашей электронной таблице (то есть, предполагая, что вы прикрепили форму к электронной таблице),AutoConfirmationзапускается автоматически, и объект события, содержащий эти свойства, передается в качестве аргумента. Если вы запустите его вручную,e является undefined (объект события не передается в качестве параметра), и вы получаете сообщение об ошибке.

Примечание:

  • e.values[1] получит то же значение, которое записано в column Bпри отправке формы, поскольку массивы JavaScript имеют нулевой индекс. Возможно, вы захотите использоватьe.namedValues['yourProperty'] вместо этого, чтобы убедиться, что вы получаете желаемую информацию.

Ссылка:

Другие вопросы по тегам