Javascript 如果3列中的任何日期=今天,Google Sheets Appscript将发送电子邮件
我正在尝试编写一个代码,如果C、D或E列(日期)等于今天的日期,它将自动触发电子邮件。我一直在研究Js的or逻辑运算符,但不起作用,我得到了一个“SyntaxError:Unexpected token”错误,是在今天的条件下,还是因为or运算符(| |)导致的 更新脚本现在可以使用const currenttime=new date()定义今天的日期了,但我收到的是每行项目的电子邮件,而不仅仅是那些有今天日期的项目,有什么线索吗Javascript 如果3列中的任何日期=今天,Google Sheets Appscript将发送电子邮件,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试编写一个代码,如果C、D或E列(日期)等于今天的日期,它将自动触发电子邮件。我一直在研究Js的or逻辑运算符,但不起作用,我得到了一个“SyntaxError:Unexpected token”错误,是在今天的条件下,还是因为or运算符(| |)导致的 更新脚本现在可以使用const currenttime=new date()定义今天的日期了,但我收到的是每行项目的电子邮件,而不仅仅是那些有今天日期的项目,有什么线索吗 function sendEmails() { const
function sendEmails() {
const sheet1 = SpreadsheetApp.getActive();
const sheet = sheet1.getSheetByName('Sheet1');
const dataRange = sheet.getRange("A1:E1000");
const data = dataRange.getValues();
const currenttime = new Date();
data.forEach(function (rowData) {
const recipient = rowData[0];
const emailAddress = rowData[1];
const Notes = rowData[5];
const date = rowData[2];
const date2 = rowData[3];
const date3 = rowData[4];
if (date == currenttime || date2 == currenttime || date3 == currenttime) {return}
const greeting = 'Dear ' + recipient + ',\n'
const customerMessage = 'Please follow up with ' + Notes + ' By today!';
const greatJobMessage = 'Thanks';
const message = [greeting, customerMessage, greatJobMessage].join('\n');
const subject = 'Reminder to Follow up!';
MailApp.sendEmail("ecmoranavila@gmail.com", subject, message);
})
}
为了使脚本正常工作,需要解决脚本中的一些问题 首先,您的
if
条件没有任何作用。它有一个空的返回(?)然后关闭。发送电子邮件的代码不符合条件,因此它将始终运行
其次,日期声明返回如下字符串:Fri Mar 13 12:30:50 GMT+01:00 2020
,因此除非工作表中的日期还应指定小时、分钟和秒(错过一秒,电子邮件将不会发送),否则它没有用
修复:
const data=dataRange.getDisplayValues()代码>
在我的工作表中,日期如下:13-03-2020
,但您可以使用任何其他日期
newdate()
返回一个长字符串。您可以使用设置格式,使其与工作表中的日期一致:
const currenttime=Utilities.formatDate(新日期(),'UTC','dd MM yyyy')代码>
if
条件,使其覆盖代码的其余部分。此外,请删除返回按钮
,因为它没有执行任何操作:它应该没有逗号,比如:如果(date=today()| | date2=today()| | date3=today(){return}我也试过了,我得到了一个ReferenceError:assignment中的左侧无效(第15行,文件“Code.gs”)错误,所以,我能够让它工作,我需要定义today(),这就是“新日期()”;在一个常数,新的代码,但是我没有收到一封电子邮件,只有一行有今天的日期,但我会收到一封电子邮件,每行项目,有什么想法吗?你能更新你发布的代码与新的工作之一?此外,即使不是今天的日期,您是否也会收到每行的电子邮件?更新,是的,我会收到每行的电子邮件,而不仅仅是那些按预期的日期工作的邮件,谢谢您在“回复”中的澄清
if (date == currenttime || date2 == currenttime || date3 == currenttime) {
const greeting = 'Dear ' + recipient + ',\n'
const customerMessage = 'Please follow up with ' + Notes + ' By today!';
const greatJobMessage = 'Thanks';
const message = [greeting, customerMessage, greatJobMessage].join('\n');
const subject = 'Reminder to Follow up!';
MailApp.sendEmail("ecmoranavila@gmail.com", subject, message)}
});
}