感谢您抽出宝贵时间来查看我的问题
我正在考虑根据单元格值将数据行传输到新的电子表格中
我已经能够在本网站的帮助中确定我需要实现的目标,但我将来会使用更大的数据集,所以要确保代码可以处理大量数据。
Copy From this Sheet
Paste to this Sheet
function transfer() {
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('COPY');
var range = ss.getRange('A2:E');
var data = range.getValues();
for (var i = 0; i <data.length; ++i){
var row = data[i];
var check = row[4];
var tss = SpreadsheetApp.openById("1qxR-L2-Tj7slZQ0NMbQl0-JXZ8iVO59410ccVNZk7Ys");
var ts = tss.getSheetByName('PASTE');
if (check == "Y") {
ts.appendRow(row);
}
}
}
答案 0 :(得分:0)
您正在用尽大部分时间打开并追加该行。这是非常昂贵的电话。将所有想要的行推送到新阵列并在最后设置该阵列要快得多。
function transfer() {
var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('COPY');
var range = ss.getRange('A2:E');
var data = range.getValues();
var tss = SpreadsheetApp.openById("1qxR-L2-Tj7slZQ0NMbQl0-JXZ8iVO59410ccVNZk7Ys");
var ts = tss.getSheetByName('PASTE');
var outArray = [];
for (var i = 0; i <data.length; ++i){
var row = data[i];
if (row[4] == "Y") {
outArray.push(row);
}
}
ts.getRange(1, 1, outArray.length, outArray[0].length).setValues(outArray);
}
尝试一下它应该真的加快速度。我还建议使用TRUE或FALSE值来确定要保留的行