Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 根据日期向收件人发送电子邮件_Email_Google Apps Script_Google Sheets_Automation - Fatal编程技术网

Email 根据日期向收件人发送电子邮件

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

我目前正在处理一个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.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
语句,因为它们实际上不需要这样做


如果它仍然不能满足你的需要,请告诉我

谢谢,罗恩,这一切我都希望它做得完美。干杯