【问题标题】:google apps script to send recurring reminders doesn't work谷歌应用程序脚本发送重复提醒不起作用
【发布时间】:2019-07-04 08:46:42
【问题描述】:

我有一段代码旨在每 8 周向 Google 表格中的地址列表发送定期电子邮件。 它似乎没有发送邮件。

我尝试了我在网上找到的各种示例,但没有成功

    ScriptApp.newTrigger("sendEmails")
  .timeBased()
  .onWeekDay(ScriptApp.WeekDay.THURSDAY)
  .atHour(11)
  .nearMinute(00)
  .everyWeeks(8)
  .create();
function sendEmails() { 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EMAILS") 
  var startRow = 2; 
  var numRows = sheet.getRange(1,4).getValue(); 
    var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
  var data = dataRange.getValues(); 
   for (i in data) { 
    var row = data[i]; 
    var emailAddress = row[0];  
    var message = row[1]; 
    var subject = "mail subject here"; 
        MailApp.sendEmail(emailAddress, subject, message); 
  } 
}

当我手动运行脚本时,它似乎工作正常,所以我猜问题出在新的触发器部分?

【问题讨论】:

  • 检查您的项目触发器 - 确保它们的设置符合您的预期。还要检查脚本的任何失败执行。
  • @ross 我没有触发器,因为我知道代码的第一部分应该是触发器。现有的时间触发器都不适合我想要的 8 周(2 个月)间隔。

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


【解决方案1】:

问题:

目前您已准备好代码,但根本不会使用它,因为它不是函数的一部分。


要求:

每 8 周触发一次运行代码。


解决办法:

将您的触发器构建器分离到一个单独的函数中。

运行以下脚本,它将删除您可能意外设置的所有触发器并创建一个应按预期运行的新触发器。

function newTrigger() {
  //clear all triggers
  var tg = ScriptApp.getProjectTriggers();
  if(tg.length>0){
    for(i=0;i<tg.length;i++){
      ScriptApp.deleteTrigger(tg[i]);
    }
  }
  //build new trigger
  ScriptApp.newTrigger("sendEmails")
  .timeBased()
  .onWeekDay(ScriptApp.WeekDay.THURSDAY)
  .atHour(11)
  .nearMinute(00)
  .everyWeeks(8)
  .create();
}

注意事项:

  • 您只需运行一次此函数即可设置触发器。
  • 在您项目的触发器中,它将显示为“每周”,但实际上应该只每 8 周运行一次,就像我们在代码中使用 .everyWeeks(8) 指定的那样。

参考资料:

【讨论】:

  • 抱歉不安全...我应该粘贴您编写的代码,然后是函数 sendEmails() 之后的整个代码?
  • 顺序无所谓,只运行我提供的函数一次,你的触发器应该是固定的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多