我有一个脚本,可以根据放置在AK列中的“ y”将一些数据从一个电子表格复制到另一个电子表格。处理数据本身就很好。
但是,在执行此操作时,会在目标电子表格中添加额外的一行。我用下面的脚本尝试了多种操作,但无法弄清楚为什么我不断得到额外的一行。很想了解我要去哪里。
function myFunction(e) {
var sourceSheetName = "Jims Calendar with Accounting";
var destinationSpreadsheetId = '1dSJOOw_oLVc6Nf-C0MY9715tZGuh69kR6-j_m8EJ-So';
var destinationSheetName = "Unprocessed Acct Data";
if (e.source.getSheetName() == sourceSheetName && e.range.getColumn() == 37 && e.value.toUpperCase() == "Y") {
var row = e.range.getRow();
var sourceValues = e.source.getRange("B" + row + ":AK" + row).getValues()[0];
var values = [sourceValues.slice(0, 35)];
values[0].unshift("JT");
Logger.log(values[0])
var tss = SpreadsheetApp.openById(destinationSpreadsheetId);
var ts = tss.getSheetByName(destinationSheetName);
ts.getRange(ts.getLastRow()+1 , 2 , values.length, values[0].length).setValues(values);
e.range.setValue("Copied");
}
}
答案 0 :(得分:1)
这几乎是相同的代码。它将一行附加到目标表。是否要附加或覆盖它。除了添加的行,它不会添加任何行。
function MyonEdit(e){
if(e.range.getSheet().getName()=='Sheet19' && e.range.getColumn()==37 && e.value.toUpperCase()=='Y'){
var row=e.range.getRow();
var vA=e.range.getSheet().getRange(row,1,1,35).getValues();
vA[0].splice(0,0,'JT');
var ss=SpreadsheetApp.openById('SSID');
var sh=ss.getSheetByName('Sheet2');
sh.getRange(sh.getLastRow()+1,2,vA.length,vA[0].length).setValues(vA);
e.range.setValue('Copied')
}
}
我没有多余的一行。
这是执行三遍后目标表的样子。