目前,我想在準確的時間運行我的谷歌應用腳??本。我已經閱讀了有關此問題的一些資訊,并決定遵循這篇文章中的解決方案。 可以每天運行 Google 表格腳本準確時間嗎?.
但是,每次時間觸發器只作業一次。第二次觸發時會顯示錯誤。我在谷歌上搜索了這個問題,其中大多數都說是 google 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
uj5u.com熱心網友回復:
這是一個 javascript Date() 建構式
var schedule_date=new Date(year,month,day,hours,minutes);
日期()建構式
uj5u.com熱心網友回復:
到目前為止,我所做的是拋出一個函式,該函式將根據當前時間將觸發器設定為確切的時間。我確保之前的觸發器被洗掉并重新創建。
function actionAtExactHour() {
var f = 'myFunction'
ScriptApp.getProjectTriggers().filter(trigger => trigger.getHandlerFunction() == f).forEach(t => ScriptApp.deleteTrigger(t))
var d = new Date();
ScriptApp.newTrigger(f)
.timeBased()
.after((60 - d.getMinutes()) * 60 * 1000)
.create()
}
function myFunction(){
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange('A1').setValue(new Date())
}
但是,我不能在 actionAtExactHour 上設定觸發器,例如每天觸發觸發器并讓 myFunction 每天在準確的時間運行……谷歌將禁用該觸發器。為此,我需要在我想要的確切時間前幾分鐘自己運行 actionAtExactHour
uj5u.com熱心網友回復:
我不相信可以設定觸發器在準確的時間運行。我的建議是將觸發器設定為在您希望它觸發的時間之前的一小時運行,然后,讓您運行一個回圈檢查確切的時間,也許每分鐘運行一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/474294.html
標籤:javascript json 谷歌应用脚本 谷歌表格
上一篇:Golang'exec.Command'對待單引號引數特殊嗎?
下一篇:Linux:查看磁盤配額報告資料
