Google 比较日期的脚本

Google Scripts comparing dates

我正在尝试运行一个脚本,该脚本接受单元格的日期,将其与今天进行比较,如果相差 4 天则运行。我不确定如何使 if 语句起作用。目前它会发送电子邮件,但不会检查声明是否正确。我不确定如何将它合并到 sheet.

到目前为止,看看我的代码,

 var checkStatus = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Responses").getRange("K:K"); 
 var status = checkStatus.getValue();*
 
  
 var formattedDate = Utilities.formatDate(new Date(), "GMT-4", "MM-dd-yyyy");
  
 if(status != "closed" && "NEED THIS TO BE DATE OF ENTRY" > (today+4)'{*
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data").getRange("A1");
    var emailAddress = emailRange.getValue();
    var message = 'It looks like there is a ticket that has not yet been closed in your sheet. Please check the sheet and ensure all customers are taken care of!'
    var subject = 'Tech Support Ticket Over-Due';
    MailApp.sendEmail(emailAddress, subject, message);
    }
}

基本上,如果 A 列中的任何日期早于 4 天并且在 L 列中不带有“已关闭”状态,我希望它给我发电子邮件。

计算提交日期和今天之间的天数,然后检查它是否大于 4。

Here's 如何计算日差的示例。 (为简化起见,我删除了 UTC 调整。请阅读该答案的评论,看看什么对您的场景有意义。)

function daysBetween(startDate, endDate) {
  var millisecondsPerDay = 24 * 60 * 60 * 1000;
  return (endDate - startDate) / millisecondsPerDay;
}

因此,要遍历回复并向那些未“关闭”且提交时间超过 4 天的回复发送电子邮件,您可以这样做:

function doSomething() {
  var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Responses").getDataRange().getValues();
  var now = new Date();
  
  for (var i = 0; i < responses.length; i++) {
    var response = responses[i];
    var submittedAt = response[0]; // Column A
    var status = response[10]; // Column K
    
    var daysSinceSubmission = daysBetween(submittedAt, now);
    
    if (status != "closed" && daysSinceSubmission > 4) {
      // Send email
    }
  }
}