我试图通过检查一个键列'O'将行从一个表复制到另一个表。通过检查GAS中的键阵列将行复制到新工作表中
function keyPush(){
var thisSheet = SpreadsheetApp.openById('##');
var origSheet = thisSheet.getSheetByName('original');
var origLastRow = origSheet.getLastRow();
var newSheet= thisSheet.getSheetByName('copy');
var tkhLastRow = newSheet.getLastRow();
var keyCol = 'O';
var key = origSheet.getRange(keyCol+'2:'+keyCol+origLastRow).getValues();
for(var row=key.length-1;row>1;row--){
if(origSheet.getRange('O'+row) != 'done')
{
var orig = origSheet.getRange('A'+row+':N'+row);
var dest = newSheet.getRange('C'+tkhLastRow+':P'+tkhLastRow);
orig.copyTo(dest,{contentOnly:true});
origSheet.getRange('O'+row).setValue('done');
}
}
}
我错过了一个循环或者什么,因为我可以看到在新工作表上迭代的行。我需要它只将未标记的行复制到新工作表。现在它将origSheet中的所有行放入newSheet的同一行,这就是为什么我可以看到它发生的原因。
我有'tkhLastRow = newSheet.getLastRow();'声明更高。在IF声明中重新声明它还做了其他事情吗? – testing123
这不是关于声明。如果您刚开始使用程序,tkhLastRow值不会改变。例如,最后一行是第3行:您将拥有'tkhLastRow = 3'。你将复制的第一行将在第3行。但在此之后,如果您不更新您的tkhLastRow值,它将保持在3而不是4。因此它总是在同一行上,这似乎是您的问题。 –
它仍然遍历所有行,所以它是循环的问题... – testing123