这是我使用的代码-我尝试了许多不同的组合,但没有一个组合给我想要的结果-您能解释一下为什么我的代码不正确吗?
代码正在对行进行迭代以查找大于0的行-如果是,则将行复制到目标表中-但是我得到了错误的行?
var arr = [[1],[2],[3],[4],[5]];
var newArr = arr.filter(function(inner){
return inner[0] >= 3;
});
// newArr = [[3], [4], [5]]
function try2() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var lastrow = sheet2.getLastRow()+1;
var target = sheet2.getRange(lastrow,1,1,5);
var data = sheet1.getRange('E1:E500').getValues();
for(var i=1; i< data.length; i++) {
Logger.log(i)
if (data[i] > 0) {
Logger.log(data[i])
sheet1.getRange(i, 1, 1, 5).copyTo(target);
}
}
}
答案 0 :(得分:1)
将数据从一张纸复制到另一张纸的下一个空闲行。
function try2() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var targetLastRow = sheet2.getLastRow() + 1;
var dataLastRow = sheet1.getLastRow();
var dataRange = sheet1.getRange(1,5,dataLastRow);
var data = dataRange.getValues();
for(var i = 0; i < data.length; i++) {
if (data[i]) {
sheet1.getRange(i+1, 1, 1, 5).copyTo(sheet2.getRange(targetLastRow+i,1));
}
}
}
此脚本将循环遍历第一张工作表E列中的所有行,并将所有非空白的行复制到工作表“最终”。通过使用dataLastRow
获取数据。您可以节省定义集合范围E1:E500
的时间,该脚本现在将仅获得运行副本所需的行数,而在运行for
循环之前,无论如何,该脚本将运行500次。
将数据复制到targetLastRow+i
,这是工作表“最终”的下一个可用行,每次循环完成时都加1。
答案 1 :(得分:0)
可以更改@ross代码的代码-谢谢
function try3() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final');
var targetLastRow = sheet2.getLastRow() + 1;
var dataLastRow = sheet1.getLastRow();
var dataRange = sheet1.getRange(1,5,dataLastRow);
var data = dataRange.getValues();
for(var i = 0; i < data.length; i++) {
Logger.log(data[i])
if (data[i] > 0) {
Logger.log(data[i])
sheet1.getRange(i+1, 1, 1, 5).copyTo(sheet2.getRange(targetLastRow+i,1));
}
}
}