1

我對使用Google文檔相當陌生,但我非常欣賞它。腳本很容易完成簡單的任務,但我已經意識到潛在的速度問題,這有點令人沮喪。谷歌電子表格通過腳本關閉自動保存?

我有一張用於我的業務的工作表,用於計算工地上某些材料的成本。它工作的很好,但是在工作之間清理有點繁瑣,所以我寫了一個簡單的腳本來清除我需要清空的範圍(由我定義並由名稱引用)。

再一次,工作得很好。唯一的問題是清除幾個範圍(七)最終需要十秒左右。我相信 - 這是因爲電子表格在每個範圍被清除後都會被保存,這會變得非常耗時。

我想要做的是通過在腳本中禁用自動保存來測試該理論,然後在範圍被清除後重新啓用它。我不知道這是否可能,因爲我沒有看到API中的函數來做到這一點,但如果是這樣,我很想知道它。


編輯:這是我使用的功能,因爲它代表。我已經嘗試過多次重寫它,以便更簡潔,更少的API調用密集型,但到目前爲止,我還沒有任何運氣來減少處理呼叫所需的時間。

function clearSheet() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    sheet.getRange("client").clear(); 
    sheet.getRange("lm_group_1").clear({contentsOnly:true}); 
    sheet.getRange("lm_group_2").clear({contentsOnly:true}); 
    sheet.getRange("dr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("dr_group_2").clear({contentsOnly:true}); 
    sheet.getRange("fr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("fr_group_2").clear({contentsOnly:true}); 
    sheet.getRange("gr_group_1").clear({contentsOnly:true}); 
    sheet.getRange("client_name").activate(); 
} 

回答

1

這是不可能的,並且可能永遠不會。這不是Google Docs的「本質」。

但是,根據您編寫腳本的方式,最終可能會一次性寫入所有更改。有一些API調用可能會迫使你的着作沖刷到電子表格中(就像在你寫了一些東西之後嘗試讀取),但是我們需要看你的代碼來檢查它。

無論如何,您始終可以檢查電子表格修訂歷史記錄,以驗證它是一次完成還是分多步完成。

關於性能,Apps腳本有一個不可避免的自然延遲,但它不是10秒,因此您的腳本可能有改進空間,使用更少的API調用,並且傾向於批量調用setValues而不是setValue等等。但是,再次,我們不得不看你的代碼來斷言並提供更多有用的提示。

+0

我已將當前腳本添加到原始帖子。我認爲它現在就是這樣(API調用太多),並且可能會重寫它,使其更加優雅一些,但這是一種正在進行的工作。 –

相關問題