Отправка электронной почты, когда выпадающий элемент выбран с помощью скрипта Sheet - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь отправить электронное письмо на адрес, указанный в столбце A, когда в раскрывающемся списке Состояние в столбце H установлено значение «Завершено». Вот что у меня есть:

function onOpen() {
sendemail();
}


// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = 'EMAIL_SENT';
var COMPLETED = 'Completed';
/**
* Sends non-duplicate emails with data from the current spreadsheet.
*/
function sendemail() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var startRow = 2; // First row of data to process
 var numRows = 400; // Number of rows to process
 var dataRange = sheet.getRange(startRow, 1, numRows, 3); //grabbing ranges 
 of values to get
 var data = dataRange.getValues(); //getting values
 var status = sheet.getRange(startRow, 8, numRows, 1); //grabbing ranges of 
 //values to get
 var data_status = status.getValues(); //getting values

//logic: if a field is populated and both Column C isn't populated, and 
//Status is Completed, populate corresponding row in column C and send email.
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = "";
var emailSent = row[2]; // Third column
   if (emailSent != EMAIL_SENT && data_status == COMPLETED) { // Prevents 
       sending duplicates
       var subject = 'Sending emails from a Spreadsheet';
       MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
  // Make sure the cell is updated right away in case the script is 
     interrupted
     SpreadsheetApp.flush();
     }
    }
  }

Этот код находится под сильным влиянием Google, и я могу получить всю информацию из столбца H, я просто не уверен, что я делаю неправильно. Проблема в том, что это не работает. Если я уберу раздел and из оператора if, он будет работать нормально, и если я отладлю код, я смогу увидеть массив значений, переданных мне из столбца H. Для каждого "завершенного" значения мне нужно отправить электронная почта, однако я не хочу, чтобы электронная почта отправлялась, если статус задан как завершенный, а столбец C имеет значение EMAIL_SENT. Спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 июля 2018

Я думаю, что ваш сценарий почти завершен. Я думаю, что скрипт работает, изменяя одну часть. Так как насчет этой модификации?

Точка модификации:

  • В вашем скрипте data_status - это двухмерный массив. И когда значение каждой строки сравнивается с «ЗАВЕРШЕНО», весь массив сравнивается.

Чтобы отразить вышесказанное в своем сценарии, измените его следующим образом.

От :
if (emailSent != EMAIL_SENT && data_status == COMPLETED) {
Кому:
if (emailSent != EMAIL_SENT && data_status[i][0] == COMPLETED) {

Если это не сработало, пожалуйста, скажите мне. Я хотел бы изменить его.

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