Google表格应用脚本发送电子邮件,如果3列中的任何日期=今天

时间:2020-03-12 05:58:57

标签: javascript google-apps-script google-sheets

我正在尝试编写一个代码,如果C,D或E列(日期)等于今天的日期,该代码将自动触发电子邮件,我一直在研究Or for Js的逻辑运算符,但没有用,我收到“ SyntaxError:意外令牌”错误,是今天的情况还是因为Or运算符(||)?

更新的脚本,现在可以使用const currenttime = new Date()来定义今天的日期了,但是我收到的是每个订单项的电子邮件,而不仅仅是具有今天日期的那些线索?

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);
  }) 
}

1 个答案:

答案 0 :(得分:0)

您的脚本有一些问题需要解决才能使其正常工作。

首先,您的if条件没有执行任何操作。它的返回值为空(?),然后关闭。发送电子邮件的代码超出条件,因此它将始终运行。

第二,Date声明返回如下字符串:Fri Mar 13 12:30:50 GMT+01:00 2020,因此除非表中的日期还应指定小时,分钟和秒(错过一秒钟,并且不会发送电子邮件),否则它无用)。


修复:

  1. 使用getDisplayValues()获取工作表的数据。否则,脚本将以与工作表完全不同的格式获取日期:

    const data = dataRange.getDisplayValues();

    在我的工作表中,日期看起来像这样:13-03-2020,但是您可以使用任何其他format


  1. 格式化当前时间的日期。如前所述,new Date()返回一个长字符串。您可以使用Utilities class对其进行格式化,以使其与工作表中写入的日期一致:

    const currenttime = Utilities.formatDate(new Date(), 'UTC', 'dd-MM-yyyy');


  1. 更改您的if条件,使其涵盖其余的代码。另外,请删除return,因为它没有执行任何操作:
  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)}
 }); 
}