Google Sheets - код для отправки электронного письма на адрес при выпадающем меню - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь настроить параметры раскрывающегося списка в листах Google, чтобы инициировать ответы по электронной почте после выбора из раскрывающегося списка. Например, если в раскрывающемся списке I в столбце I выбрана ошибка «Ready For QA» или «Approved», электронное письмо должно быть запущено и отправлено на адрес электронной почты в столбце H, который содержит строку темы: «Позиция готова к QA "с информацией из всех ячеек в строке A - P, которая включает заголовки из каждого столбца.

Я что-то упустил из моего кода ниже?

https://docs.google.com/spreadsheets/d/1qwyvtSo_mzHztZJ7MJLfPy8TlvPYqCLIEKC9APBWeMQ/edit#gid = 78026112

var sheetname = "march";
//Installable Trigger 
function sendEmail(e) {
  // Get sheet, row and column where the event was triggered 
  var sheet = e.source.getSheetByName("march");
  var range = e.range;
  var col = range.getColumn();
  var row = range.getRow();
  // Check if the event meets your conditions
  if (e.value === "Ready for QA" && col === 9) {
    // Get headers and data where the "Ready for QA" was set
    var headers =  sheet.getRange("A1:P1").getValues()[0];
    var data = sheet.getRange(row, 1, 1, 16).getValues()[0];
    MailApp.sendEmail({
      to: data[7], // user's email Also
      subject: `Line item is ${e.value}`,
      // Combine the right header with the right data and send them as the body
      body: headers.map((el, index) => `${el}: ${data[index]}`).join("\n")
    });
  }
}

picture of error message sent to me after selecting Ready for QA in the drop down

1 Ответ

0 голосов
/ 11 марта 2020

Для отправки электронного письма, удовлетворяющего необходимым условиям и формату, вы должны установить Устанавливаемый триггер и использовать подготовленный мной код:

//Installable Trigger 
function sendEmail(e) {
  // Get sheet, row and column where the event was triggered 
  var sheet = e.source.getSheetByName("YOUR-SHEET-NAME");
  var range = e.range;
  var col = range.getColumn();
  var row = range.getRow();
  // Check if the event meets your conditions
  if (col === 9) {
    // Get headers and data where the "Ready for QA" was set
    var headers =  sheet.getRange("A1:P1").getValues()[0];
    var data = sheet.getRange(row, 1, 1, 16).getValues()[0];
    MailApp.sendEmail({
      to: data[7], // user's email Also
      subject: `Line item is ${e.value}`,
      // Combine the right header with the right data and send them as the body
      body: headers.map((el, index) => `${el}: ${data[index]}`).join("\n")
    });
  }
}

Обратите внимание, как я использовал e аргумент, который является объектом события для триггера события onEdit для получения значений листа. Кроме того, я бы порекомендовал вам установить для столбца идентификатор заказа формат как Plain text, поскольку в скрипте Apps это может быть огромное число и, следовательно, в научном формате c.

Теперь, для настройки устанавливаемого триггера, сделайте следующее:

1) Go к вашему проекту скрипта Apps.

2) Нажмите Edit-> Триггеры текущего проекта .

3) Нажмите «+ Добавить триггер».

4) Выберите:

  • Выберите, какую функцию запустить -> Имя функции (в данном случае sendEmail ).

  • Выбор источника события-> Из электронной таблицы.

  • Выберите тип события -> При редактировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...