大家好,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/