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脚本有条理地格式化一个单元格