Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果3列中的任何日期=今天,Google Sheets Appscript将发送电子邮件_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如果3列中的任何日期=今天,Google Sheets Appscript将发送电子邮件

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

我正在尝试编写一个代码,如果C、D或E列(日期)等于今天的日期,它将自动触发电子邮件。我一直在研究Js的or逻辑运算符,但不起作用,我得到了一个“SyntaxError:Unexpected token”错误,是在今天的条件下,还是因为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);
  }) 
}

为了使脚本正常工作,需要解决脚本中的一些问题

首先,您的
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)}
     }); 
    }