2017-01-14 234 views
0

我只是想檢查文檔中的每個字符,但是這超過了6分鐘的限制時間,對於40000個字符的文檔。我猜我應該存儲這些數據,然後從那裏訪問它,但是這種做法是如何被調用的?基本但極其緩慢

function myFunction() { 
    var body = DocumentApp.getActiveDocument().getBody(); 
    var text = body.getText(); 
    var editText = body.editAsText(); 


    for (var i = 0 ; i < text.length; i++){ 
    Logger.log(text[i]); 
    Logger.log(editText.getAttributes(i)); 
    } 
} 
+1

你想對角色做什麼?像這樣,你正在對Logger進行80k的調用,這顯然會很慢。它真的會被記錄爲單個字符嗎? –

+0

爲了更正特定的錯誤和/或屬性,我需要我的腳本來考慮每一個字符,以便定義模式。日誌記錄比做任何其他操作更重要嗎? – lucanapo

+0

是的,但是你想以什麼方式檢查它們,對記錄器執行80k次調用會很慢,因爲它是一個IO操作(爲此目的包括API調用等),如果你在內存中做的事情你應該沒問題。 –

回答

0

嘗試使用batch operations這是Best Practices的一部分在谷歌Apps腳本編程時。指南中包含優化的代碼。

通過最大限度地減少讀取和寫入次數,您可以編寫腳本以最大限度地利用內置緩存。交替讀取和寫入命令很慢。要加速腳本,請使用一個命令將所有數據讀入數組,然後對數組中的數據執行任何操作,然後使用一個命令寫入數據。