Email 根据日期向收件人发送电子邮件
我目前正在处理一个Google Sheets文件的脚本:Email 根据日期向收件人发送电子邮件,email,google-apps-script,google-sheets,automation,Email,Google Apps Script,Google Sheets,Automation,我目前正在处理一个Google Sheets文件的脚本: function myAlerts() { // this runs based on daily trigger var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Reminders"); var range = sheet.getDataRange(); var values = range.getDisplay
function myAlerts() { // this runs based on daily trigger
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Reminders");
var range = sheet.getDataRange(); var values = range.getDisplayValues();
var lastRow = range.getLastRow();
var curDate = values[1][5]
var anyMatches = false;
var message = ""; var sheetUrl = ss.getUrl();
var email = Session.getActiveUser().getEmail();
var optionalEmail = values[2][1];
if (optionalEmail != "") { email = email + "," + optionalEmail; }
for (var i = 5; i < lastRow; i++) {
// if today matches the alert date, send an alert
if (values[i][3].toString() == curDate.toString()) {
// add a message for this row if date matches
message = message + values[i][0] + " will expire on " + values[i][1] + "<br />\n";
// if there is a match, set anyMatches to true so and email gets sent
anyMatches = true;
}
} // ends for loop
// footer for message
message = message + "<br />\nThis is an auto-generated email to remind you of your document expiration. <br />\n"
if (anyMatches) { // send an email
MailApp.sendEmail({
to: email,
subject: 'Document Expiration Notice!',
htmlBody: message});
}
}
函数myAlerts(){//此函数基于每日触发器运行
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“提醒”);
var range=sheet.getDataRange();var values=range.getDisplayValues();
var lastRow=range.getLastRow();
var curDate=值[1][5]
var anyMatches=false;
var message=“”;var sheetUrl=ss.getUrl();
var email=Session.getActiveUser().getEmail();
var optionalEmail=数值[2][1];
如果(可选电子邮件!=”){email=email+”,“+optionalEmail;}
对于(变量i=5;i\n”过期;
//如果存在匹配项,请将anyMatches设置为true,以便发送电子邮件
anyMatches=true;
}
}//循环结束
//消息的页脚
message=message+“
\n这是一封自动生成的电子邮件,用于提醒您文档过期。
\n”
如果(anyMatches){//发送电子邮件
MailApp.sendmail({
致:电邮:,
主题:“文件到期通知!”,
htmlBody:message});
}
}
在我的工作表中,如果我在B3中输入电子邮件地址,脚本会向我(工作表的所有者)和其他人发送电子邮件。脚本查看F2,并检查D列以查看是否有日期匹配。如果他们这样做,它将发送一封电子邮件,其中包含同一行中其他列的信息
我如何编辑此脚本,使其不仅向我发送电子邮件,以及B3中的电子邮件地址,还发送同一行中的电子邮件地址,该行具有匹配的日期???只需从第一个
if
语句中删除您的{email=email+”,“+optionalEmail;}
,然后将其移到第二个语句之后,添加电子邮件值,就像添加optionalEmail
变量一样
if (values[i][3].toString() == curDate.toString()) {
email = email + "," + optionalEmail + "," + values[i][2];
最新评论:
当我提出改变建议时,我没有领会到这一点。这需要更多的工作。您需要将整个MailApp.sendmail
块移动到第二个if
语句中。然后你需要在每次迭代中“清除”你的变量,这样它们就不会进入下一次迭代。要有效地执行此操作,您需要创建一个新变量来保存电子邮件收件人(recip
)。如果您清除email
变量,则代码将抛出错误,因为您使用的是填充该变量的逻辑
以下是更新的代码:
function myAlerts() { // this runs based on daily trigger
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Reminders");
var range = sheet.getDataRange(); var values = range.getDisplayValues();
var lastRow = range.getLastRow();
var curDate = values[1][5]
var message = ""; var sheetUrl = ss.getUrl();
var email = Session.getActiveUser().getEmail(); var optionalEmail = values[2][1];
for (var i = 5; i < lastRow; i++) { // if today matches the alert date, send an alert
if (values[i][3].toString() == curDate.toString()) {
var recip = email + "," + optionalEmail + "," + values[i][2];
//changed variable to allow for clearing.
// add a message for this row if date matches
message = message + values[i][0] + " will expire on " + values[i][1] + "<br />\n";
MailApp.sendEmail({
to: recip,
subject: 'Document Expiration Notice!',
htmlBody: message});
recip = ""; // clears email recipients for next iteration.
message = ""; // clears message for next iteration.
}
} // ends for loop
}
// footer for message message = message + "<br />\nThis is an auto-generated email to remind you of your document expiration. <br />\n"
函数myAlerts(){//此函数基于每日触发器运行
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“提醒”);
var range=sheet.getDataRange();var values=range.getDisplayValues();
var lastRow=range.getLastRow();
var curDate=值[1][5]
var message=“”;var sheetUrl=ss.getUrl();
var email=Session.getActiveUser().getEmail();var optionalEmail=value[2][1];
对于(var i=5;i\n”过期;
MailApp.sendmail({
致:recip,
主题:“文件到期通知!”,
htmlBody:message});
recip=”“;//为下一次迭代清除电子邮件收件人。
message=”“;//为下一次迭代清除消息。
}
}//循环结束
}
//message message的页脚=message+“
\n这是一封自动生成的电子邮件,用于提醒您文档过期。
\n”
我还删除了anyMatches
变量和第一个if
语句,因为它们实际上不需要这样做
如果它仍然不能满足你的需要,请告诉我 谢谢,罗恩,这一切我都希望它做得完美。干杯