2016-12-25 23 views
0

我有33頁的Google文檔。 我需要清除文檔內容並將其替換爲其他內容。DocumentApp:需要很長時間才能清除當前文檔(60秒以上)?

我使用的代碼是:

DocumentApp.getActiveDocument().getBody().clear(); 

當我運行這行代碼,它需要幾秒鐘才能完成的代碼。到現在爲止還挺好。

但是,文檔屏幕凍結,並且刷新屏幕需要60多秒。大約30秒後,Chrome瀏覽器要求我等待或終止瀏覽器選項卡(並選擇「等待」)。

Chrome任務管理器顯示剩餘312 MB內存正在使用中。當運行上述命令時,CPU跳到107%並停留在那裏,內存增長到970 MB。使用Chrome v56,適用於Safari的相同類型的行爲。

當我按下(Google文檔)撤消按鈕時,只需要一秒鐘左右即可恢復所有文字。

什麼是推薦的方法來清空當前文檔?

更新:它似乎與格式有關。該文檔是從Word文檔複製粘貼的,包括一些格式(字體,顏色,粗體)。

  • 試驗1:粘貼爲文本僅在谷歌文獻(編輯>粘貼無格式)。運行clear()命令需要大約一秒鐘的時間。
  • 測試2:定期複製粘貼(原始測試從這篇文章),它保持格式。運行clear()命令需要60+秒。
  • 測試3:定期複製粘貼,然後使用DocumentApp.getActiveDocument().getBody().setAttributes將粗體/斜體/字體/大小/顏色設置爲默認值。這種方式看起來類似於純文本版本。花費約2秒鐘。然後運行clear()命令,該命令仍然需要60+秒。
  • 測試4:定期複製粘貼。然後Cmd-A和Delete,需要5-6秒。
+1

也許'clear'方法,通過元素的作品元素,反過來摧毀每一個,瀏覽器正試圖在這個過程中重新渲染它...會發生什麼,如果你清楚,而無需打開該文檔中你的瀏覽器,使用'DocumentApp.getDocumentById( 'YOUR_ID')getBody()清();'? – FTP

回答

0

嘗試使用的另一種方式。

var myDoc = DocumentApp.getActiveDocument().getBody(); 
myDoc.editAsText().deleteText(1, myDoc.getText().length-1); 
+0

具有相同的行爲。而且,這會忽略非文本元素(圖片,橫向規則等)。 BTW。 deleteText使用基於0的索引。 – wivku

相關問題