根据Google工作表中的单元格值加快将行传输到另一个工作表

时间:2018-04-16 13:50:16

标签: google-apps-script google-sheets

感谢您抽出宝贵时间来查看我的问题 我正在考虑根据单元格值将数据行传输到新的电子表格中 我已经能够在本网站的帮助中确定我需要实现的目标,但我将来会使用更大的数据集,所以要确保代码可以处理大量数据。

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);
   }
 }
}

1 个答案:

答案 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值来确定要保留的行