如何使用脚本编辑器在单元格中添加今天的日期以及7天

时间:2020-10-05 11:00:36

标签: google-apps-script google-sheets

我有一个脚本来发送电子邮件并将“ Email_Sent”放置在一栏中以阻止重新发送,我想做的是让它输入今天的日期加上7天而不是“ Email_Sent”,因此我可以使用如果date = Today()是提醒我,这是我要尝试更改的一点,这是我所拥有的,而第二个片段是我需要但可以工作的:

工作:

if (emailSent !== "EMAIL_SENT" && Send == "TRUE") {
var subject = 'Your Movie Link';
MailApp.sendEmail(emailAddress, subject, messagebody);
sheet.getRange(startRow + i, 8).setValue("EMAIL_SENT");

对此进行更改但不起作用:

if (emailSent == Today()) {
var subject = 'Your Movie Link';
MailApp.sendEmail(emailAddress, subject, messagebody);
sheet.getRange(startRow + i, 9).setValue(Today()+7);

1 个答案:

答案 0 :(得分:1)

说明:

要创建从今天起7天后的日期:

const dt = new Date()
dt.setDate(dt.getDate() + 7)

要使用以下解决方案,您需要确保emailSent是日期对象。转到工作表并使用=isdate(A1)。如果TRUE的值确实是A1对象,则后者将返回date。如果它是一个日期对象,则可以创建一个new Date()对象。也就是说,如果emailSent是工作表中的日期,那么您应该可以:new Date(emailSent)

解决方案:

function SendEmails() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Send Email');
  var lastRow =sheet.getLastRow();
  
  var startRow = 2; 
  var numRows = lastRow-1; 

  var dataRange = sheet.getRange(startRow, 1, numRows, 5000);
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
   var row = data[i];
   var emailAddress = row[1];
   var Name = row[5];
   var Amount = row[6];
   var message = row[7]; 
   var emailSent = row[8];
   var subject = "Reminder fom spreadsheet";
 messagebody = message.replace("{Name}",Name).replace("{Amount}",Amount)
ssTimeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();

const dt = new Date();
if (Utilities.formatDate(new Date(emailSent), ssTimeZone, 'yyyy-MM-dd') == Utilities.formatDate(dt, ssTimeZone, 'yyyy-MM-dd')) {
dt.setDate(dt.getDate() + 7);  
var subject = 'Your Movie Link';
MailApp.sendEmail(emailAddress, subject, messagebody);
sheet.getRange(startRow + i, 9).setValue(Utilities.formatDate(dt, ssTimeZone, 'yyyy-MM-dd'));

      SpreadsheetApp.flush();
    }
  }
}