2017-09-03 45 views
0

當我爲與Google電子表格關聯的Google應用程序腳本創建每日基於時間的觸發器時,系統會提示我選擇一小時長窗口內的執行時間,似乎cron包裝程序在該小時長的時間間隔內隨機分配一個確切的執行時間。更改Google電子表格應用程序腳本觸發器的排隊時間

由於我的應用程序的特定用例有幾個數據依賴關係,這些數據依賴關係可能無法在小時前完成,所以我不得不將它分成幾個階段,每個階段都有一個單獨的觸發器,以確保所需的數據將可用。

例如,最初爲我的腳本分配的觸發時間爲上午6:03,但通常在上午5:57到達的數據有時直到上午6:10纔到達,並且腳本沒有任何可處理的內容天。作爲一個鈍器解決方案,我刪除了6-7AM觸發器,並重新創建它以在7-8AM時隙執行,以確保所需的數據可用。這要求腳本的第二階段必須移至8-9AM,導致腳本結果可能會延遲2-3小時。

爲了改善這種情況,我正在考慮整合兩個腳本處理階段並創建一個更準確的腳本執行觸發時間,比如6:30 AM是安全的。有誰知道:

  1. 是否有可能,除了通過觀察每天的處理,發現已分配的確切觸發執行時間,並
  2. 如果隨機分配的,可腳本觸發器被創建和刪除,直到一個可接受的精確執行時間被獲得?

在此先感謝您提供的任何指導。

+1

我相信距離最近的是[(+/- 15分鐘)](https://developers.google.com/apps-script/reference/script/clock-trigger-builder)。我會在6點30分和7點設置兩個觸發器,或者像你提到的那樣將它們結合起來。如果您真的需要在15分鐘窗口之前運行流程,可以在早上6點觸發一個[分鐘觸發器](https://developers.google.com/apps-script/reference/script/clock-trigger -builder#everyMinutes(Integer))來檢查數據是否到達,如果它確實運行了你的進程,那麼就有分鐘觸發器自我刪除。 –

回答

1

如果準確性至關重要,您可以放棄使用應用程序腳本觸發器並改用第三方工具。我想推薦使用cron-job.org。此服務可以創建cron作業,使您對指定的url端點發出POST請求,並且您可以將時間精確到一分鐘。要將其與Apps Script結合使用,請執行doPost()來處理髮布的請求並將您的腳本部署爲Web APP。然後,您使用該服務創建一個cron作業,並將該應用程序的URL作爲端點傳遞給它。

cron作業將在預定時間觸發,您可以在doPost()內部執行任何必需的操作以響應傳入的POST請求。

0

非常感謝您隨意的部分和Dimu設計的指導。基於實驗,這裏有答案,我的問題:

  1. 是否有可能比通過觀察日處理,發現已分配的確切觸發執行時間等? 答案:除了觀察在請求的小時窗口內分配的隨機觸發時間以外,沒有辦法。
  2. 如果隨機分配,腳本觸發器是否可以創建和刪除,直到獲得可接受的精確執行時間? 答:是的。我通過觀察觸發器的執行時間(通過電子郵件消息時間戳)以及刪除,重新創建並觀察隨機分配的觸發器執行時間來調整腳本的分配執行時間,直到在請求的小時窗口內得到可接受的分鐘爲止。
相關問題