根據我評論的文章,以下內容應該更快,因爲它只寫一次。我不得不重寫循環來讓我的索引匹配得很好。
function myOwnReplaceTest(){
var ss = SpreadsheetApp.getActiveSheet();
var sheet = ss.getName();
var newVals = new Array(ss.getLastRow());
for (var r = 0; r < ss.getLastRow(); r++) {
newVals[r]=new Array(ss.getLastColumn()-1);
for (var c = 0; c < ss.getLastColumn(); c++) {
var sr = ss.getRange(r+1, c+1).getValue();
var re = sr.toString().replace(1,'x');
newVals[r][c]=re;
//ss.getRange(r, c).setValue(re);
}
}
//Browser.msgBox(newVals);
ss.getRange(1,1,newVals.length,newVals[0].length).setValues(newVals);
}
想必它還可以通過將數據讀入數組來進一步提高。編輯:這是看起來像什麼。
function myOwnReplaceTest(){
var ss = SpreadsheetApp.getActiveSheet();
var sheet = ss.getName();
var newVals = new Array(ss.getLastRow());
var allSr = ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn());
//Browser.msgBox(allSr.getValues());
for (var r = 0; r < ss.getLastRow(); r++) {
newVals[r]=new Array(ss.getLastColumn()-1);
for (var c = 0; c < ss.getLastColumn(); c++) {
//var sr = ss.getRange(r+1, c+1).getValue();
var sr = allSr.getCell(r+1, c+1).getValue();
var re = sr.toString().replace(1,'x');
newVals[r][c]=re;
//ss.getRange(r, c).setValue(re);
}
}
//Browser.msgBox(newVals);
ss.getRange(1,1,newVals.length,newVals[0].length).setValues(newVals);
}
我希望這會加速一點點。另一個調整可能是多次不調用getLastColumn(),但我想這不是一個很大的因素。這裏的關鍵是內部for循環中的所有操作現在都在內存中。
我認爲看到https://developers.google.com/apps-script/guides/support/best-practices它描述「使用批量操作」 –
你好,我很愚蠢的這個例子或一週是漫長。當我問你爲我的例子的一個例子時,這是無恥的嗎?謝謝 –