javascript - 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);
}
解决方案
尝试这样的事情:
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();
推荐阅读
- java - TextView 在某些设备上动画后消失
- objective-c - 如何修复 xcode10 中的“多个命令产生”错误?
- r - 我不知道如何绘制 R 中某些代码结果的概率分布
- javascript - html5 currentTime 和音量更改未生效
- angular5 - 如何将 CK-editor 与 Angular 5 集成。我正在尝试将 ck-editor v4 与应用程序集成,我得到“元素引用不是通用的”
- c# - 如何在 Visual Studio 安装程序项目中添加经过验证的发布者
- c# - 如何限制并发请求处理同时进行控制器中的操作?
- javascript - SetVariable(变量计数,变量计数)
- mysql - 如何为我的 nodejs 项目创建 mysql 数据库?
- mysql - 如何保持我的“有效期”行始终相对于“到期日期”行进行更新?