Нужен скрипт для Google Docs для отправки авто почты - PullRequest
0 голосов
/ 29 апреля 2020

Я ищу сценарий, который можно добавить на лист 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 ]

0 голосов
/ 30 апреля 2020

Проблема:

Ошибка, которую вы получаете:

TypeError: Невозможно прочитать 'значения' свойства неопределенного

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

Ссылка:

0 голосов
/ 29 апреля 2020

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

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

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

...