2016-03-08 160 views
0

我有3個功能需要在一夜之間運行(當沒有人使用我的電子表格時)。我的約束是之前函數2點開始Google Apps腳本,按順序運行時間觸發器

  • 功能1必須完成,功能2功能3前必須完成啓動
  • 每一個過程,在最壞情況下可能需要90至120秒完成

我知道,每個腳本在服務器終止線程之前的最長執行時間爲6分鐘。根據我的經驗,我通常會在5分鐘左右看到這種情況。

我不打算把所有3函數放到一個函數中,因爲最糟糕的最壞情況(3x 120秒)可能讓服務器終止線程。

我打算做什麼是調度這些功能一個接一個通宵 enter image description here

我的問題後:這些間隔61分鐘或60個mintutes? EG Function2和Function3是否可以在01:00開始執行?

我想我可以安排他們在23:00-00:00,01:00-02:00和03:00-04:00開火。我希望找到一個不涉及5小時(最壞的情況下)完成。

感謝

回答

1

您可以根據需要創建觸發器。您不需要依賴基於菜單的觸發器。有更多的靈活性ClockTriggerBuilder

例如,對於你的情況,你可以這樣做:

function createTimeDrivenTriggers() { 


    // Trigger Function 1 everyday at 23:00. 

    ScriptApp.newTrigger('Function 1') 
     .timeBased() 
     .everyDays(1) 
     .atHour(23) 
     .create(); 

// Trigger Function 2 everyday at 1:00. 
    ScriptApp.newTrigger('Function 2') 
     .timeBased() 
     .everyDays(1) 
     .atHour(1) 
     .create(); 

// Trigger Function 3 everyday at 2:00. 
    ScriptApp.newTrigger('Function 3') 
     .timeBased() 
     .everyDays(1) 
     .atHour(2) 
     .create(); 
} 

請登陸。

+0

謝謝Br。薩彥。 – onji

+0

謝謝Br。薩彥。 我應該說過,但是我需要這個能夠在我沒有登錄到我的電腦(例如在度假,週末)出於某種原因運行。 我試過之前編程觸發器,但然後我需要它們存在於一個函數內,因此需要調用擁有函數。我可以在上面的示例中調用擁有函數createTimeDrivenTriggers(),但是一旦我在某個時間離開本週,觸發器就會停止觸發 – onji

+0

它與您正在登錄或完全沒有關係!你希望誰在早上2點登錄他們的帳戶,以運行他們的劇本?你得到的錯誤是什麼?什麼是完整的代碼?然後我們可以看到。而且,你只需要運行一次觸發器功能。一旦設置了觸發器,它應該在適當的時候自動調用函數。如果有的話,還可以爲我們提供'Logger.log()'條目。 –