Wazzup伙计们,多亏有了这个网站,我才能够获得一个允许发送电子邮件提醒的代码。现在,我只想根据日期发送提醒,尤其是当“提醒日期”与今天的日期匹配时。我发现了这个awesome post,但仍然无法使其正常工作。
我曾尝试过多次尝试搜索类似案件,但无济于事。该代码实际上在没有“基于日期”条件的情况下可以工作,但是我似乎无法解决。我尝试更改格式,在脚本中使用了“实用程序”,但是仍然没有。
下面是工作表的外观以及代码。因此,就当前数据而言,我应该收到“去健身房”任务的电子邮件提醒,但没有收到任何(尽管我在A列中输入了正确的电子邮件)。
哪里出错了?希望您对此有见识和指导。谢谢!
var EMAIL_SENT = "Yes";
function sendEmails() {
var now = new Date().toLocaleDateString();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var startRow = 2;
var sheet = ss.getSheetByName ('Tasks')
var numRows = sheet.getLastRow();
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0];
var message = row[2];
var ReminderDate = row[3];
var emailSent = row[4];
var subject = "Task reminder: "+row[1];
if (ReminderDate != now)
continue;
if (emailSent != EMAIL_SENT) {
message = "Good day! This is to remind you of a spefic task: "+ message +". \n\nThis reminder was triggered by the task monitoroing sheet: "+ ss.getUrl()
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 5).setValue(now);
SpreadsheetApp.flush();
}
}
}
答案 0 :(得分:2)
在电子表格中,当使用日期时,由getValue()
和getValues()
检索的值是日期对象。在脚本中,当row[3]
中的var row = data[i]
是日期对象时,if (ReminderDate != now)
始终是false
。
为避免上述问题,请进行如下修改,因为now
中的if (ReminderDate != now)
是var now = new Date().toLocaleDateString();
。
var ReminderDate = row[3];
至:
var ReminderDate = row[3].toLocaleDateString();