将谷歌表格行转移到基于单元格的另一个表格




感谢您抽出宝贵时间查看我的问题。
我正在考虑将数据行传输到基于单元格值的新电子表格中.
我自己也找到了一些例子,但并不完全能够让它满足我的确切需求。如果我忽略了之前回答过的任何问题,请指出我正确的方向。我能够实现的最接近的是我当前的代码。
当 E = "Y"从复制工作表复制到粘贴工作表时,我正在考虑将 A-E 列中的数据复制到 PASTE 工作表 - 工作表的示例如下。我目前的问题是,它复制所有数据,即使 D 不是"Y",并为"Y"的每个实例复制它。
因此,如果我在 E 列中有 3 个"Y",那么它会被复制 3 次以上。从此表复制
粘贴到此工作表

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.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
   }
 }
}

你的 'data' 变量存储源工作表中的所有值,因此调用 setValues(data( 会将所有内容传输到目标工作表。为简单起见,您可以将其替换为:

ts.appendRow(row);

另一个问题是你如何调用'getRange(('方法:

sheet.getRange(startRow, startColumn, numberOfRows, numberOfColumns);

在您的情况下,行数等于 data.length,而它必须是 1,因为您只需要复制一行。

最新更新