2017-01-02 64 views
0

我有兩個類似的腳本每天午夜在兩個不同的電子表格上運行,在時間事件觸發。我不知道爲什麼,但幾天後我的腳本不再執行,並在我的郵箱中出現以下錯誤:Service using too much computer time for one day試圖瞭解配額限制導致的服務錯誤。

因此,我看了一下Google Apps Quotas guide,但我並不真正瞭解它。我不明白我的腳本的哪個部分正在達到一些限制,我應該怎麼做才能解決此問題。

這裏是我的腳本:

function saveData() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var data1 = sheet.getRange('data!B3').getValue(); 
    var data2 = sheet.getRange('data!C3').getValue(); 
    var data3 = sheet.getRange('data!D3').getValue(); 
    var data4 = sheet.getRange('data!E3').getValue(); 
    var data5 = sheet.getRange('data!F3').getValue(); 
    var data6 = sheet.getRange('data!A3').getValue(); 
    sheet.appendRow([data1,data2,data3,data4,data5,data6]); 
} 

任何提示?這是因爲我使用了太多相同的方法嗎?哪個配額指的是這個?

謝謝!

回答

1

我不確定問題出在哪兒,但是你的代碼可以減少getRange調用的次數,這樣會稍微乾淨些,速度稍快。我假設表[0]被稱爲數據:

function saveData() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    var data = sheet.getRange('A3:F3').getValues()[0]; 
    sheet.appendRow([data[1],data[2],data[3],data[4],data[5],data[0]]); 
} 
0

根據Google Apps Quotas指南:「一天使用計算機時間過長的服務:這表示腳本超出了一天的總可執行時間,最常見的情況是發生在觸發器上的腳本比手動執行腳本的每日限制更低。「

觸發器不能運行超過30秒。

您的腳本可能會超出此執行時間。

+0

感謝您的支持。我的腳本被執行2-3次... –

+1

不知道你從哪裏得到。觸發器調用的函數可以運行6分鐘。所有觸發器合併後,您可以在gmail.com帳戶上擁有90分鐘的總運行時間。 @SimonBreton也許你有更多的觸發器?請記住,由您的帳戶設置的** all **觸發器每天不能運行超過90分鐘。並且請注意utphx答案,批量讀取數據,絕對不需要在函數中多次使用'getRange()' – Vytautas

+0

謝謝@Vytautas我剛剛清理了所有觸發器,並在utphx advise之後重構了我的腳本。我不知道的是,我正在使用Google Sheet插件,該插件正在我的帳戶中添加一些觸發器來刷新數據。我明天會做,但現在一切正常,並提出總結答案。 –

0

感謝所有意見和答案,我解決了我的問題。我清理腳本編輯器中可以訪問的觸發器列表(ressources => triggers list)。我發現了一些觸發器,我不知道哪些位置是由我正在使用的Google雲端硬盤附加組件添加的。我也以utphx的方式提醒我重構我的代碼。