Google脚本:在单元格中的日期前7天发送电子邮件

时间:2020-02-17 15:12:10

标签: google-apps-script spreadsheet

我制作了一个需要帮助的脚本。这个正在获得第三行,并发送一封对我来说没有意义的电子邮件。 有一个日期单元格。我想要这种方式,它应该在该单元格中的日期为7天的那一行中发送一封电子邮件。你知道如何处理吗?所以我认为这完全是错误的。

Sheet的名称如下: 姓|姓名|日期

如果日期是7天内,我想收到一封电子邮件。

function sendEmail() {

 //setup function
 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
 var StartRow = 3;
 var RowRange = ActiveSheet.getLastRow() - StartRow + 1;
 var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11);
 var AllValues = WholeRange.getValues();

 var message = "";
 //iterate loop
 for (i in AllValues) {

 //set current row
 var CurrentRow = AllValues[0];



 //set HTML template for information
  message =
      "<p><b>Name: </b>" + CurrentRow[5] + ' ' + CurrentRow[4] + ' ' + "</p>" +
      "<p><b>Department: </b>" + CurrentRow[8] + "</p>" +
      "<p><b>Location: </b>" + CurrentRow[1] + "</p>" +
      "<p><b>Last working day on: </b>" + CurrentRow[6] + "</p>" +
      "<p><b>Exit date -contractual-: </b>" + CurrentRow[7] + "</p>" +
        "<p><b>Useful links: </b>"+' ' +  "</p><br><br>";

  //set the row to look at
  var setRow = parseInt(i) + StartRow;

  //mark row as "sent"
  ActiveSheet.getRange(setRow, 13).setValue("Mail sent");
}

 //define who to send grants to 
 var SendTo = "person@domain.com";

 //set subject line
  var Subject = "Subject: " + CurrentRow[4] + ' ' + CurrentRow[5] + ' | Date: ' + CurrentRow[7];


  //send the actual email  
  MailApp.sendEmail({
      to: SendTo,
      cc: "",
      subject: Subject,
      htmlBody: message,
});
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我想这就是你想要的。也许您的工作表中的图像会使其更清晰。

function sendEmail() {
  var ss=SpreadsheetApp.getActive();
  var ash=ss.getSheetByName('Sheet2');
  var sr=3;
  var vA=ash.getRange(sr,1,ash.getLastRow()-sr+1,12).getValues();
  //Header Row: none,Location,None,None,Name1,Name2,LastWorkingDay,ExitDate,Department,None,None,Email Sent
  var message="";
  var dt=new Date();
  var tdv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  for (var i=0;i<vA.length;i++) {
    message =
      "<p><b>Name: </b>" + vA[i][5] + ' ' + vA[i][4] + ' ' + "</p>" +
        "<p><b>Department: </b>" + vA[i][8] + "</p>" +
          "<p><b>Location: </b>" + vA[i][1] + "</p>" +
            "<p><b>Last working day on: </b>" + vA[i][6] + "</p>" +
              "<p><b>Exit date -contractual-: </b>" + vA[i][7] + "</p>" +
                "<p><b>Useful links: </b>"+' ' +  "</p><br><br>";
    var SendTo="person@domain.com";
    var Subject="Subject: " + vA[i][4] + ' ' + vA[i][5] + ' | Date: ' + vA[i][7];
    var cd=new Date(vA[i][7]);//Im guessing this is the date for the 7 day threshold
    var cdv=new Date(cd.getFullYear(),cd.getMonth(),cd.getDate()-7).valueOf();
    if(tdv>=cdv && vA[i][11]!='Email Sent') {
      MailApp.sendEmail({to: SendTo,subject: Subject,htmlBody: message});
      ash.getRange(sr,12).setValue("Email Sent");
    }
  }             
}

这就是我想您的标题行。

enter image description here