我有一个脚本来发送电子邮件并将“ 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);
答案 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();
}
}
}