我編寫了一個Greasemonkey腳本,每5分鐘在Google Apps腳本中單擊一個腳本的播放按鈕,以避免Google設置的執行時間限制。用Greasemonkey點擊Google Apps腳本中的播放按鈕?
當時間結束但我無法使用JavaScript單擊「運行」按鈕時,我能夠識別腳本。我一直在使用谷歌瀏覽器檢查按鈕,並嘗試了一些東西,但我無法使其工作。
任何人都可以幫我嗎?
我猜一下谷歌表的工具欄上的任何按鈕將是完全一樣的..
謝謝!
我編寫了一個Greasemonkey腳本,每5分鐘在Google Apps腳本中單擊一個腳本的播放按鈕,以避免Google設置的執行時間限制。用Greasemonkey點擊Google Apps腳本中的播放按鈕?
當時間結束但我無法使用JavaScript單擊「運行」按鈕時,我能夠識別腳本。我一直在使用谷歌瀏覽器檢查按鈕,並嘗試了一些東西,但我無法使其工作。
任何人都可以幫我嗎?
我猜一下谷歌表的工具欄上的任何按鈕將是完全一樣的..
謝謝!
你正以完全錯誤的方式接近這一點。您應該包含在腳本內部使用觸發器重新啓動執行的可能性。我會告訴你我是如何做到的。請記住,我的腳本非常大,它執行一個循環,我不得不記住它停止的循環中的位置,因此它可以繼續使用相同的數據。
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Purpose: Check if there is enough time left for another data output run
// Input: Start time of script execution
// Output: Boolean value if time is up
function isTimeUp(start, need) {
var cutoff = 500000 // in miliseconds (5 minutes)
var now = new Date();
return cutoff - (now.getTime() - start.getTime()) < need;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這裏start
很簡單,當您啓動腳本創建new Date()
。 need
只是我的腳本執行1循環所需的平均時間。如果循環沒有足夠的時間,我們將用另一個函數切斷腳本。
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Purpose: Store current properties and create a trigger to start the script after 1 min
// Input: propertyCarrier object (current script execution properties)
// Output: Created trigger ID
function autoTrigger(passProperties, sysKeys) {
var sysProperties = new systemProperties();
if (typeof sysKeys === 'undefined' || sysKeys === null) {
sysKeys = new systemKeys();
}
var triggerID = ScriptApp.newTrigger('stateRebuild')
.timeBased()
.after(60000)
.create()
.getUniqueId();
Logger.log('~~~ RESTART TRIGGER CREATED ~~~');
//--------------------------------------------------------------------------
// In order to properly retrieve the time later, it is stored in milliseconds
passProperties.timeframe.start = passProperties.timeframe.start.getTime();
passProperties.timeframe.end = passProperties.timeframe.end.getTime();
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Properties are stored in User Properties using JSON
PropertiesService.getUserProperties()
.setProperty(sysKeys.startup.rebuildCache, JSON.stringify(passProperties));
//--------------------------------------------------------------------------
Logger.log('~~~ CURRENT PROPERTIES STORED ~~~');
return triggerID;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
此致可以更簡單,如果你不需要記住您停止(由目前的實施來看你不關心你是否從頭開始或沒有)。
您創建的觸發器應該瞄準主函數,或者如果您需要像我一樣傳遞數據,則需要具有單獨的啓動器函數以從用戶屬性獲取數據並將其傳遞。
替代greasemonkey使用時間驅動的觸發器。請參閱https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers –
或捕獲超時錯誤並再次調用腳本的html。 –
我低調這個問題,因爲它顯示零研究工作。你只是做了一個控制檯的截圖。你的代碼在哪裏不能像你期望的那樣工作?另請閱讀:http://stackoverflow.com/help/how-to-ask –