你好,Stack Overflow上的精彩电影。
我写了一个小脚本,从电子表格中提取引文并通过电子邮件发送给用户。我们的想法是,该脚本每天运行一次,在电子表格中提取下一个引号并将其发送到电子邮件地址。
脚本如下所示:
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 = "myemail@email.com"; // 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;
}
}
手动运行时脚本运行正常。
现在我添加了一个如下所示的脚本触发器:
sendEmails |时间驱动|日计时器|晚上7点到晚上8点
不幸的是,该函数未执行且报价未被发送。
我在理解Time-Driven触发器时也遇到了一些问题。 “晚上7点到晚上8点”是什么意思?在这两个小时之间的一个随机时间?
如果我不必登录Google文档,该脚本才有意义。也许我在这里完全误解了一些问题......如果我登录Google Docs,脚本是否只能运行? (但即使我现在,脚本也不会使用Time-Driven触发器执行。)
我非常感谢你对此的看法。 Moritz的
答案 0 :(得分:2)
从Timer / Event运行脚本时,没有“ActiveSpreadsheet”。而不是使用.getActiveSpreadsheet()使用.openById()
您无需使用Google文档(甚至完全通过身份验证),您的脚本触发器就可以成功运行。
此外,它会帮助(特别是在调试时)使用立即通知脚本失败。在设置计时器的位置,单击通知链接进行设置。
答案 1 :(得分:0)
除了mzimmerman的回答
我在理解Time-Driven触发器时也遇到了一些问题。 “晚上7点到晚上8点”是什么意思? 这意味着你的脚本将在晚上7点到晚上8点之间的任何时间执行,但根据我的观察,它会在晚上7点之后执行。