2016-04-16 92 views
1

如何設置一個時間限制來結束一分鐘後運行的功能?如何限制谷歌腳本執行時間爲1分鐘?

情況:我有一個腳本,每天運行5分鐘。我的腳本超過了3小時的每日計算時間限制。因此,我需要創建一個函數調用我的functon A(很長,所以我贏了這裏發佈),但只允許它運行最多1分鐘,然後結束。

我已經廣泛搜索,但所有其他解決方案的工作與循環。但是,導致超時的函數不是循環類型的函數。我不介意這個功能沒有成功完成。

+1

我們解釋一下能夠持續這麼久。我非常懷疑你不使用循環。你可能會使用循環。所有你需要的是檢查經過的時間,如果是的話就停下來。 –

回答

1

您可能需要一個循環,執行一段代碼,每次只運行幾秒鐘;或者您需要添加多行代碼,以便每隔「經常」檢查一次狀態。

要獲得起始時間,你可以使用:

var startTime = Date.now(); //Get milliseconds from a date in past 

作爲一個測試,你可以運行下面的函數,然後查看日誌:

function exampleCode() { 

    var startTime = Date.now(); 
    Logger.log(startTime); 

    Utilities.sleep(1000); //Stop the code for 1 second 

    var timeNow = Date.now(); 
    Logger.log(timeNow); 

    var elapsedTime = timeNow - startTime; 
    Logger.log(elapsedTime); 
}; 

當然,你止跌我不想重新分配startTime。所以把它放在代碼的頂部,不要重新計算它。

要停止碼,1分鐘,這就是60000毫秒

if (elapsedTime > 60000) {return}; //Quit after 1 minute 

您可以創建一個函數來檢查所經過的時間:你的函數犯規怎麼利用循環但其

function elapsedTime() { 
    var timeNow = Date.now();  
    var elapsedTime = timeNow - startTime; 
    if (elapsedTime > 60000) {return 'die'}; //return 'die' if longer than 1 minute 
}; 

if (elapsedTime() === 'die') {return};//Quit after 1 minute 
+0

首先,感謝您的快速回復!好吧,現在我想我需要使功能B啓動功能A,然後執行Utilities.sleep(60000);然後檢查功能A是否仍在運行。如果是,則殺死函數A.同時在函數A中,如果函數A運行完畢,先殺死函數B,然後結束自身。我的問題是如何讓一個函數在運行時殺死另一個函數? –

+0

閱讀以下鏈接的信息:[併發模型和事件循環](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)和[JavaScript函數調用](http:// www .w3schools.com/js/js_function_invocation.asp) –

+0

謝謝,明白了! –

相關問題