如何設置一個時間限制來結束一分鐘後運行的功能?如何限制谷歌腳本執行時間爲1分鐘?
情況:我有一個腳本,每天運行5分鐘。我的腳本超過了3小時的每日計算時間限制。因此,我需要創建一個函數調用我的functon A(很長,所以我贏了這裏發佈),但只允許它運行最多1分鐘,然後結束。
我已經廣泛搜索,但所有其他解決方案的工作與循環。但是,導致超時的函數不是循環類型的函數。我不介意這個功能沒有成功完成。
如何設置一個時間限制來結束一分鐘後運行的功能?如何限制谷歌腳本執行時間爲1分鐘?
情況:我有一個腳本,每天運行5分鐘。我的腳本超過了3小時的每日計算時間限制。因此,我需要創建一個函數調用我的functon A(很長,所以我贏了這裏發佈),但只允許它運行最多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
首先,感謝您的快速回復!好吧,現在我想我需要使功能B啓動功能A,然後執行Utilities.sleep(60000);然後檢查功能A是否仍在運行。如果是,則殺死函數A.同時在函數A中,如果函數A運行完畢,先殺死函數B,然後結束自身。我的問題是如何讓一個函數在運行時殺死另一個函數? –
閱讀以下鏈接的信息:[併發模型和事件循環](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop)和[JavaScript函數調用](http:// www .w3schools.com/js/js_function_invocation.asp) –
謝謝,明白了! –
我們解釋一下能夠持續這麼久。我非常懷疑你不使用循環。你可能會使用循環。所有你需要的是檢查經過的時間,如果是的話就停下來。 –