所以我將應用程式腳本與具有 100k 行的作業表一起使用,所以我想知道哪些方法具有更好的性能,通常,我使用srcRange.getValues()并dstRange.setValues(dstData)使用應用程式腳本在作業表中移動資料,但是,我最近發現它們的性能在嘗試應用時顯著下降它們在大約 20K 細胞的范圍內,現在我只想知道我應該繼續使用它們還是考慮使用類似的東西,srcRange.copyTo(dstRange)如果它更好的性能明智的話。
uj5u.com熱心網友回復:
getValues()最好在將資料寫入作業setValues()表之前修改或驗證資料內容時使用。如果您的目標只是將資料從一張表復制到另一張表,則最好使用的方法是Range.copyTo(dstRange)因為它不需要腳本來讀取、處理和寫入大型陣列。
這是我為getValues/setValuesvs所做的示例測驗copyTo:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet2');
sh1.getRange("A1:AL2967").copyTo(sh2.getRange("A1"));
}
function myFunction2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet3');
var data = sh1.getRange("A1:AL2967").getValues();
sh2.getRange(1,1,data.length, data[0].length).setValues(data);
}
myFunction 運行時間:

myFunction2 運行時間:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/428195.html
