【问题标题】:Google Sheets Scripts - send an email based on a cell being today's dateGoogle 表格脚本 - 根据单元格作为今天的日期发送电子邮件
【发布时间】:2021-10-08 18:59:00
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    试试这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多