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



我有一个脚本来发送电子邮件并放置一个"电子邮件发送"在停止重新发送的专栏中,我试图做的是让它输入今天的日期加上7天,而不是";电子邮件发送"所以我可以使用ifdate = 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);

解释:

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

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

要使用以下解决方案,您需要确保emailSent是一个日期对象。转到工作表并使用=isdate(A1)。如果A1的值确实是date对象,则后者将返回TRUE。如果它是一个日期对象,那么您可以创建一个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();
}
}
}

最新更新