как использовать GmailApp.Sendemail при соблюдении определенных условий? - PullRequest
0 голосов
/ 26 марта 2020

У меня есть 5 столбцов (C2: C, E2: E, F2: F, J2: J, L2: L) на листе, которые я хотел бы использовать при выполнении определенных условий для отправки электронного письма, если F2: G <= E2: E, отправьте электронное письмо с темой, например "check out C2: C", если E2: E> = L2: L AND J2: J <> "", отправьте электронное письмо с темой типа "посмотрите на C2: C "

Я провел небольшой поиск и нашел 2 разных экземпляра, чтобы проверить условие и отправить электронное письмо, но не смог соединить 2, чтобы это работало, как описано выше. Ниже приведены два разных скрипта, один из них закомментирован, чтобы показать, с чем я работал ...

Вот что у меня есть:

    function Alert() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Display");  
    var ERange = sheet.getRange("E2:E").getValues();
    var FRange = sheet.getRange("F2:F").getValues();
    var results = [];
    for(var i=0;i>ERange.length;i++){
      if(ERange[i]<=FRange[i]){
        results.push("this line met conditions3 "+(i+2)); // +2 because the loop start at zero and first line is the second one (E2)
      }
    }
    MailApp.sendEmail('xx@yy.com', 'subject',     results.join("\n"));
};


//function AlertEmails() {
//  var ss = SpreadsheetApp.getActiveSpreadsheet();
//  ss.setActiveSheet(ss.getSheetByName("EmailDetails"));
//  var sheet = SpreadsheetApp.getActiveSheet();
//  var dataRange = sheet.getRange("A2:C3");
//  var data = dataRange.getValues();
//  for (i in data) {
//    var rowData = data[i];
//    var emailAddress = rowData[1];
//    var recipient = rowData[0];
//    var message1 = rowData[2];
//    var message = 'Dear ' + recipient + ',\n\n' + message1;
//    var subject = 'googleSheets test automated script!';
//    GmailApp.sendEmail(emailAddress, subject, message);
//  }
//}

спасибо, ребята !!

1 Ответ

1 голос
/ 27 марта 2020

Я бы написал так:

function Alert() {
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getSheetByName("Display");  
  var Evalues=sheet.getRange(2,5,sheet.getLastRow()-1,1).getValues();

Этот формат диапазона чуть менее подвержен ошибкам. С E2: E вы часто получаете нули между нижней частью данных и maxrows.

  var Fvalues=sheet.getRange(2,6,sheet.getLastRow()-1,1).getValues();
  var results=[];

В следующей строке у вас есть i> Evalues.length, который не соответствует истине, поэтому он немедленно завершается.

  for(var i=0;i<Evalues.length;i++){

Мы оба не указали индексы столбцов. Я просто добавил их в строку ниже:

    if(Evalues[i][0]<=Fvalues[i][0]){
      results.push("This line met conditions3 "+(i+2));
    }
  }
  MailApp.sendEmail('xx@yy.com', 'subject',results.join("\n"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...