我是Java和Google Script Editor的新手。我在Google工作表中有一个自定义CRM电子表格,并希望根据定期安排的后续日期设置提醒电子邮件。我遇到了代码问题。我认为麻烦可能是因为我试图将日期与字符串进行比较,但我无法弄清楚如何让它发挥作用。
目标是在跟进日期与今天的日期匹配时发送电子邮件。后续日期根据公式计算。
即使日志显示:
[16-07-28 13:38:06:549 PDT]日期是2016年7月28日星期四00:00:00 GMT-0700(PDT)
[16-07-28 13:38:06:549 PDT]今天是2016年7月28日星期四00:00:00 GMT-0700(PDT)
我的If语句if(date == todayFull)不起作用。这是代码:
function sendEmails() {
var ss = SpreadsheetApp.openById("number");
var sheet = ss.getSheetByName("Script");
var startRow = 2; // First row of data to process
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
// Fetch the range of cells
var dataRange = sheet.getRange(2, 1, lastRow, lastCol);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var date = row[32];
var todayFull = new Date();
todayFull.setHours(0);
todayFull.setMinutes(0);
todayFull.setSeconds(0);
Logger.log("Date is "+date);
Logger.log("Today is "+todayFull);
if (date == todayFull) {
Logger.log("This is a test. The Date is Today");
// var emailAddress = row[28]; // Email column
// var groupName = row[3]; // Group Name column
// var subject = "Follow up with this group right now!";
// MailApp.sendEmail(emailAddress, subject, groupName);
};
};
}
答案 0 :(得分:1)
感谢您的帮助。第一个答案结束了大部分工作。使用.getDate()有帮助,但我还必须添加月和年的参数。这是我最终得到的代码:
HOST="$(hostname -s | sed 's/..$//; s/.*/\L&/')"
等
答案 1 :(得分:0)
您正在比较两种不同的数据类型:
var date = row[32]; // reads in a String object
var todayFull = new Date(); // creates a new Date (now) object
...
if (date == todayFull) { // compares Date with String
...
}
当您从工作表中读取值,然后比较那些Date对象的实际日期(以给定日期的00:00:00:00)时,您可能最好创建Date对象,就像您一样似乎打算这样做:
var date = new Date(row[32]); // creates a new Date (date in string) object
var todayFull = new Date(); // creates a new Date (now) object
todayFull.setHours(0,0,0,0) // sets time to midnight of current day
...
// compare Date with Date
if (date.getTime() == todayFull.getTime()) {
...
}
请参阅MDN的优秀documentation on Javascript's Date。