目前,我想在准确的时间运行我的谷歌应用程序脚本。我已经阅读了一些关于这个问题的文章,我决定遵循这篇文章 It's possible run Google Sheets script Exact Time Everyday? 中的解决方案。 .
但是,每次时间触发器只能工作一次。第二次触发时会显示错误。我在谷歌上搜索了这个问题,大多数人都说这是谷歌 v8 的错误。( https://issuetracker.google.com/issues/150756612 )。
因此,我决定将我的代码降级为 ES5
因为这是帖子( https://issuetracker.google.com/issues/150756612 )中唯一的解决方案。但是,我面临着更改 spread operator(...)
的问题。 至 ES5
这是我的代码:
function runTrigger(hours,minutes) {
var today_D=new Date();
var year=today_D.getFullYear();
var month=today_D.getMonth();
var day=today_D.getDate();
day=day+1;
var pars=[year,month,day,hours,minutes];
var schedule_date=new Date(...pars);
var hours_reamain=Math.abs(schedule_date - today_D)/36e5;
ScriptApp.newTrigger("testFunction")
.timeBased()
.after(hours_reamain*60*60*1000)
.create()
}
function deleteTrigger() {
var triggers=ScriptApp.getProjectTriggers();
var ssId="1d5P4ohgSLtOzuInxq1IYQUsB4GybeYhth5Gj21RI3rA";
var ss=SpreadsheetApp.openById(ssId);
for(var i=0 ; i< triggers.length ; i++) {
ss.appendRow([new Date() ,JSON.stringify(triggers[i]), JSON.stringify(triggers[i].getHandlerFunction()) , JSON.stringify(triggers[i].getEventType()) , JSON.stringify(triggers[i].getTriggerSource())])
if(triggers[i].getHandlerFunction() === "testFunction") {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
function setTrigger() {
deleteTrigger();
runTrigger(1,35);
}
function testFunction() {
//some code at here
setTrigger();
}
有人可以教我如何更改 ...(spread operator)
至 ES5
最佳答案
这是一个 JavaScript Date() 构造函数
var schedule_date=new Date(year,month,day,hours,minutes);
关于javascript - 如何在准确的时间运行谷歌应用程序脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72230966/