首页 > 解决方案 > Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件

问题描述

我已经看过了,但我似乎无法从所有不同的答案中拼凑代码。

我有 4 列由以下内容填充:处理日期、电子邮件、姓名、删除日期

我想做的是向静态电子邮件地址发送电子邮件,包括当“删除日期”列中的单元格等于今天的日期时需要删除的电子邮件地址。我还需要它每天运行一次。

我已经弄清楚了使用触发器的日常运行情况。我在下面粘贴了我正在尝试运行的代码。我的想法是将数据放入一个数组中,评估第 4 列的日期。然后当日期是今天时,它会返回整行,以便我可以使用第二列中列出的电子邮件。

function SendEmail() 
{
  var presentDay = new Date();
  var rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  var filteredEmails = rows.filter(function(row)
  {
    var removalDate = row[4];
    if (removalDate === Date)
    {
      return row
    }
  })

  Logger.log(filteredEmails);

  var emailAddress = "staticEmail@gmail.com";
  var message = ' needs to be removed'; 
  var subject = 'Member needs to be removed';


        //MailApp.sendEmail(emailAddress, subject, row[2] + message);
    
  
  
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


尝试这样的事情:

function sendEmails() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Emails';
  const sr = 2; //data start row
  const dt = new Date();
  const tdv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  const vs = sh.getRange(sr, 1, sh.getLastRow() - sr + 1, sh.getLastColumn()).getValues();
  const fvs = vs.filter(r => {
    let d = new Date(r[4]);
    let dv = new Date(d.getFullYear(),d.getMonth(),d.getDate()).valueOf()
    return dv == tdv;
  });
  fvs.forEach(r => {});//send emails with this loop
}

如果您希望以数字方式比较日期,则必须使用 valueOf() 或 getTime();


推荐阅读