【问题标题】:I'm trying to send an automated anniversary list. my code returns no errors but is sending no emails我正在尝试发送自动周年纪念列表。我的代码没有返回错误,但没有发送电子邮件
【发布时间】:2020-05-07 10:19:13
【问题描述】:
function sendAnniversaryCampaing(){
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1FkKtSpvwecDEc6of2Nh37ud3qGgcNaK253S7jd7KqB0/edit#gid=0");//  Sheet Url 

  var sheet = ss.getSheetByName("Sheet1");// Make Sure Sheet name matches at the bottom 

  var templateId = '157YoH_ngoESR-pwNUXfFj0dUwDYXBqOd6RCgB_cJVsQ';// the template doc with placeholders

  var cDate = new Date(); //Present Day, 
  for(var i =2 ;i<=sheet.getLastRow(); i++){

    var anDate = sheet.getRange(i,4).getValue(); // Date from SpreadSheet 

    if(cDate.getDate()==anDate.getDate()){

      if(cDate.getMonth()==anDate.getMonth()){

        var name = sheet.getRange(i,2).getValue();

        var toMail= sheet.getRange(i,3).getValue();

        sendMail(sheet,templateId,name,toMail);//sheet doesn't appear to be used in sendMail() Edited by Cooper.

        sheet.getRange(i,5).setValue("Anniversary email sent"); 
      }
    }
  }
}



function sendMail(sheet,templateId,name,toMail){

  var docId = DriveApp.getFileById(templateId).makeCopy('temp').getId();

  var doc = DocumentApp.openById(docId);// the temp copy
  var body = doc.getBody();

  body.replaceText('#name#',name);// update the temp doc
  doc.saveAndClose();// save changes before conversion


  var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+docId+"&exportFormat=html";
  var param = {
    method      : "get",
    headers     : {"Authorization": "Bearer" + ScriptApp.getOAuthToken()}
  };

  var htmlBody = UrlFetchApp.fetch(url,param).getContentText();

  var trashed = DriveApp.getFileById(docId).setTrashed(true);// delete temp copy

  MailApp.sendEmail(toMail,'Anniversary Campaing'+name,' ' ,{htmlBody : htmlBody});// send to myself to test

}

【问题讨论】:

  • 您应该实现日志以查看函数失败的位置(可能是 if 条件未满足`)。否则,请提供经过清理的电子表格副本以进行故障排除。
  • 补充@ziganotschka 所说的内容,请使用Logger.logconsole.log 打印toMail 等变量的值,然后在运行代码后查看日志。跨度>

标签: email google-apps-script google-sheets


【解决方案1】:

试试这个:

function sendAnniversaryCampaing(){
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1FkKtSpvwecDEc6of2Nh37ud3qGgcNaK253S7jd7KqB0/edit#gid=0");//  Sheet Url 
  var sheet = ss.getSheetByName("Sheet1");// Make Sure Sheet name matches at the bottom 
  var templateId = '157YoH_ngoESR-pwNUXfFj0dUwDYXBqOd6RCgB_cJVsQ';// the template doc with placeholders
  var cDate = new Date().valueOf(); //Present Day, 
  for(var i=2;i<=sheet.getLastRow(); i++){
    var anDate=new Date(sheet.getRange(i,4).getValue()).valueOf(); // Date from SpreadSheet 
    if(cDate==anDate){
      var name=sheet.getRange(i,2).getValue();
      var toMail= sheet.getRange(i,3).getValue();
      sendMail(sheet,templateId,name,toMail);
      sheet.getRange(i,5).setValue("Anniversary email sent"); 
    }
  }
}

【讨论】:

    猜你喜欢
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2012-01-06
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多