Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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_Triggers_Gmail - Fatal编程技术网

Email 发送定期提醒的谷歌应用程序脚本不';行不通

Email 发送定期提醒的谷歌应用程序脚本不';行不通,email,google-apps-script,google-sheets,triggers,gmail,Email,Google Apps Script,Google Sheets,Triggers,Gmail,我有一段代码,每8周向谷歌表单中的地址列表发送一次定期电子邮件。 它似乎没有发出邮件 我在网上找到了各种各样的例子,但都没有成功 ScriptApp.newTrigger("sendEmails") .timeBased() .onWeekDay(ScriptApp.WeekDay.THURSDAY) .atHour(11) .nearMinute(00) .everyWeeks(8) .create(); function sendEmails() { v

我有一段代码,每8周向谷歌表单中的地址列表发送一次定期电子邮件。 它似乎没有发出邮件

我在网上找到了各种各样的例子,但都没有成功

    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); 
  } 
}
当我手动运行脚本时,它似乎工作正常,因此我猜问题出在新的触发器部分?

问题: 目前,您已经准备好了代码,但它根本不会被使用,因为它不是函数的一部分


要求: 触发器每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();
}
函数newTrigger(){ //清除所有触发器 var tg=ScriptApp.getProjectTriggers(); 如果(热重长度>0){ 对于(i=0;i问题: 目前,您已经准备好了代码,但它根本不会被使用,因为它不是函数的一部分


要求: 触发器每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();
}
函数newTrigger(){ //清除所有触发器 var tg=ScriptApp.getProjectTriggers(); 如果(热重长度>0){
对于(i=0;i检查项目触发器-确保它们按预期设置。还要检查脚本的任何失败执行。@ross我没有触发器,因为我知道代码的第一部分应该是触发器。现有的时间触发器都不适合我所需的8周(2个月)间隔。检查项目触发器-确保它们按预期设置。还要检查脚本的任何失败执行。@ross我没有触发器,因为我知道代码的第一部分应该是触发器。现有的时间触发器都不适合我所需的8周(2个月)间隔。很抱歉不安全…我应该粘贴您编写的代码,然后是函数sendmails()之后的整个代码?顺序无关紧要,只需运行我提供的函数一次,您的触发器就会得到修复。很抱歉不安全…我应该粘贴您编写的代码,然后是函数sendmails()之后的整个代码?顺序无关紧要,只需运行我提供的函数一次,您的触发器就会得到修复。