google-sheets - Google 电子表格时间驱动事件不会触发

标签 google-sheets google-apps-script

大家好,Stack Overflow 上的好 friend 。

我编写了一个小脚本,从电子表格中提取报价并通过电子邮件将其发送给用户。这个想法是,脚本每天运行一次,提取电子表格中的下一个报价并将其发送到电子邮件地址。

脚本如下所示:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 1000;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 2, numRows, 3);
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    if(row[2]=="yes") { 
      continue;
    }
    var emailAddress = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c7aabea2aaa6aeab87a2aaa6aeabe9a4a8aa" rel="noreferrer noopener nofollow">[email protected]</a>";     // email to send to 
    var message = '"'+row[0]+'"'+"\n\n"+"- "+row[1];       // Second column
    startRow = parseInt(startRow)+parseInt(i);
    var subject = "";
    MailApp.sendEmail(emailAddress, subject, message);  
    sheet.getRange(startRow,4).setValue("yes");
    SpreadsheetApp.flush();
    break;
  }
}

当我手动运行该脚本时,该脚本运行良好。

现在我添加了一个如下所示的脚本触发器:

发送电子邮件 |时间驱动 |日间计时器 |晚上7点至8点

不幸的是,该函数未执行且报价未发送。

我对时间驱动触发器的理解也有点问题。 “晚上七点到八点”是什么意思?在这两个小时之间的随机时间一次?

只有当我不必登录 Google 文档时,该脚本才有意义。也许我完全误解了这里的某些内容...脚本是否仅在我登录 Google 文档时才有效? (但即使我是,到目前为止,该脚本也不会使用时间驱动触发器执行)。

我非常感谢您对此的想法。 莫里茨

最佳答案

当您从计时器/事件运行脚本时,没有“ActiveSpreadsheet”。使用 .openById() 而不是使用 .getActiveSpreadsheet()

您不需要进入 Google 文档(甚至根本不需要进行身份验证)即可让脚本触发器成功运行。

此外,对脚本失败使用即时通知会有所帮助(尤其是在调试时)。在设置计时器的位置,单击通知链接进行设置。

关于google-sheets - Google 电子表格时间驱动事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555871/

相关文章:

google-apps-script - 如何为 Google Apps Script Webapp 上的并发用户提供便利?

javascript - 如何通过 JavaScript 重置表单

google-apps-script - Google Apps 脚本 - 删除大型电子表格中的重复项

google-apps-script - 如何重置谷歌表格计数器?

google-apps-script - 此插件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器

performance - 在 Google Sheet 列中查找第一个空行的更快方法

excel - 如果单元格包含 .com 或 .co.uk - excel/google 电子表格中的 if 语句

google-apps-script - 如何检查 e.oldValue 更新后 e.value 是否为空

eclipse - eclipse : Error reading contents of project from Drive; 上的应用程序脚本

mysql - 无法使用 JDBC 将 Apps 脚本连接到 Cloud SQL