Мне нужен скрипт, который автоматически запускает функцию sendEmail при изменении значения ячейки - PullRequest
2 голосов
/ 14 июля 2020

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

 function sendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  
  var emailAddress = sheet1.getRange(9,5).getValue();
  var subject = "Checking the app script" 
  var message = "Checking the app script working from indigenious id and drive link https://drive.google.com/file/d/1MdoADqSeudMwMruLJUU32OA5bdtyweiv/view?usp=sharing "
  MailApp.sendEmail(emailAddress, subject, message);

  
}

1 Ответ

0 голосов
/ 14 июля 2020

Вам необходимо настроить свою функцию на триггере onEdit, который можно установить

  • onEdit триггеры срабатывают, когда в таблице происходит редактирование (например, пользователь вводит vlaue в ячейке)
  • они запускают вашу функцию автоматически, когда событие запускает триггер
  • Они позволяют вам извлекать объекты событий , связанные с редактированием, например ячейку, которая имеет были отредактированы и введено значение - см. здесь для доступных событий Google Таблиц для Edit
  • Из-за ограничений простых триггеров вам необходимо использовать устанавливаемая версия , чтобы иметь возможность отправлять электронные письма
  • Свяжите триггер с вашей функцией, как описано здесь

Модификация вашего кода для запуска по триггеру (обратите внимание, что из-за использования объектов событий этот код приведет к ошибке, если вы попытаетесь запустить его вручную, нажав кнопку «воспроизведение»):

function sendEmail(e) {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  if(e.range.getA1Notation() == "E9" && e.range.getSheet() == sheet1){   
    var emailAddress = e.value;
    var subject = "Checking the app script" 
    var message = "Checking the app script working from indigenious id and drive link https://drive.google.com/file/d/1MdoADqSeudMwMruLJUU32OA5bdtyweiv/view?usp=sharing "
    MailApp.sendEmail(emailAddress, subject, message);
  } 
}

Этот код использует объекты событий * 1 034 * и value.

...