以下脚本和触发器在第一个实例中按预期运行。但随后它并没有停止!此后触发器每分钟继续执行一次!
我只需要它按照编程运行一次,就是这样! 如何在第一次预期执行后停止执行触发器? 任何帮助将不胜感激! PS:这是我第一次尝试编写 Google Sheet 脚本,所以请让答案简单易懂!
function sendWAnow(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Reports');
var Date = sheet1.getRange(3,3).getValue();
var subject = sheet1.getRange(4,3).getValue();
var emailAddress = sheet1.getRange(5,3).getValue();
var message = sheet1.getRange(6,3).getValue();
ScriptApp.newTrigger('sendWAnow')
.timeBased()
.at(Date)
.create();
MailApp.sendEmail(emailAddress, subject, message);
}
最佳答案
说明:
您的代码作为触发器的无限循环运行。第一次执行 sendWAnow()
时,它将创建一个触发器,该触发器将执行 sendWAnow()
,然后再次创建一个新触发器。
解决方案:
您应该拆分这两个函数,一个函数应该为另一个函数创建触发器。
仅执行createTrigger()
:
function createTrigger(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Reports');
var Date = sheet1.getRange(3,3).getValue();
ScriptApp.newTrigger('sendWAnow')
.timeBased()
.at(Date)
.create();
}
这将在特定时间触发 sendWAnow()
。
function sendWAnow(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Reports');
var Date = sheet1.getRange(3,3).getValue();
var subject = sheet1.getRange(4,3).getValue();
var emailAddress = sheet1.getRange(5,3).getValue();
var message = sheet1.getRange(6,3).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}
关于datetime - 类 ClockTriggerBuilder : Specific Date and Time (only once) Trigger in Google Sheet Script keeps repeatedly executing every minute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63918112/