Нужен скрипт для Документов 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']
вместо этого, чтобы убедиться, что вы получаете желаемую информацию.