满足某些条件时如何使用GmailApp.Sendemail?

时间:2020-03-26 17:07:22

标签: google-apps-script google-sheets

我希望在满足某些条件以发送电子邮件时使用的工作表中有5列(C2:C,E2:E,F2:F,J2:J,L2:L) 如果F2:G <= E2:E,则发送主题为“签出C2:C”的电子邮件 如果E2:E> = L2:L AND J2:J <>“”,则发送主题为“看看C2:C”的电子邮件

我做了一些搜索,发现了2个不同的实例来检查条件并发送电子邮件,但无法将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 个答案:

答案 0 :(得分:1)

我会这样写:

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

此范围格式不太容易出错。使用E2:E,您经常在数据底部和最大行之间得到空值。

  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"));
}