感谢您抽出宝贵时间来查看我的问题
我正在考虑根据单元格值将数据行传输到新的电子表格中
我自己找到了一些例子,但并不能完全满足我的确切需求。如果我忽略了之前回答的任何问题,请指出我正确的方向。我能够达到的最接近的是我目前的代码
我正在考虑复制A-E列中的数据,当E =“Y”从COPY表到PASTE表时 - 表的示例如下。
我当前的问题是,即使D不是“Y”,它也会复制所有数据,并为每个“Y”实例复制它。
因此,如果我在E列中有3个“Y”,那么它将复制3次。
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.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}
}
}
答案 0 :(得分:1)
您的'data'变量存储源表中的所有值,因此调用setValues(data)会将所有内容传输到目标工作表。为简单起见,您可以将其替换为:
ts.appendRow(row);
另一个问题是你如何调用'getRange()'方法:
sheet.getRange(startRow, startColumn, numberOfRows, numberOfColumns);
在您的情况下,行数等于data.length,而它必须为1,因为您只需要复制一行。