Запуск сценария электронной почты при изменении значения ячейки - PullRequest
2 голосов
/ 10 января 2020

Я использую Google Forms для запуска базы данных клиентов. Когда мне позвонил заказчик, я редактирую ту же запись в форме Google. Поэтому я хотел бы узнать, как это изменение или запись определенной ячейки может вызвать почтовый скрипт, который я опубликую здесь. Он должен срабатывать только один раз, в момент изменения. Спасибо за подсказку.

Редактировать:

Теперь я добавил «если» и установил триггер на Отправку формы. Теперь, если я изменяю в форме Google значение «test» и отправляю форму, мне отправляется электронное письмо. Но как я могу указать это для каждой записи, если у меня есть несколько адресов электронной почты в форме. И что это не отправляет двойной?

function sendArticleCountEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName("Test"));
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange("A2:F4");
  var data = dataRange.getValues();
  var currentValue = sheet.getRange("J2").getValue();
  if (currentValue == ("test")) 
  for (i in data) {
    var rowData = data[i];
    var emailAddress = rowData[1];
    var recipient = rowData[0];
    var message1 = rowData[2];
    var message2 = rowData[3];
    var parameter2 = rowData[4];
    var message3 = rowData[5];
    var message = 'Dear ' + recipient + ',\n\n' + message1 + ' ' + message2 + ' ' + parameter2 + ' ' + message3;
    var subject = 'Your article count for this month';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

1 Ответ

3 голосов
/ 10 января 2020

Ответ:

Невозможно отправить электронное письмо об изменении ячейки в Google Sheet. Однако вы можете отправлять электронные письма при отправке формы.

Простые триггеры:

Согласно документации скрипта Google Apps для простых триггеров:

onEdit(e) триггер запускается автоматически, когда пользователь изменяет значение любой ячейки в электронной таблице.

Однако триггеры также имеют определенные ограничения:

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

Отправка формы:

Вы все еще можете использовать библиотеку GmailApp в скрипте Apps для отправки электронной почты и указать несколько отправляемых сообщений. Если, как в вашем примере, адреса электронной почты все находятся в столбце B:

var emails = []
var addresses = SpreadsheetApp.getActiveSpreadsheet().getRange('B2:B').getValues();
var list = [];
for (var i = 0; i < addresses.length; i++) {
  if (addresses[i] == "") {
    break;
  }
  if (list.indexOf(addresses[i][0]) > -1) {
  }
  else {
    list.push(addresses[i][0]);
  }
}

, а затем измените:

var emailAddress = rowData[1];

на:

var emailAddress = list[0];

Это отправит электронное письмо на все адреса электронной почты, указанные в списке, но пропустите дубликаты, указанные в листе.

Надеюсь, это было полезно для вас!

Ссылки:

...