Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件

Posted

技术标签:

【中文标题】Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件【英文标题】:Google Sheets Scripts - send an email based on a cell being today's date 【发布时间】: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);
    
  
  

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如果文本被另一个单元格匹配,请使用Google Apps脚本有条理地格式化一个单元格

带有自定义脚本的公式不会在 Google 电子表格中更新

Google 电子表格脚本:检查单元格是不是为空

使用 Google 表格下拉菜单更改单元格背景颜色而不是文本

使用 AppS 脚本返回 Google 表格单元格的绝对值

Apps 脚本 - 在 Google 表格上复制“将图像放入选定的单元格”