Reputation: 33
I have a script that copies some of the data from one spreadsheet to another based on a "y" being placed in column AK. Coping the data itself works just fine.
However, when it does it adds an extra row to the destination spreadsheet. I have tried multiple manipulations with the script below but can not figure out why I keep getting an extra row. Would love to understand where I am going wrong.
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");
}
}
Upvotes: 0
Views: 93
Reputation: 64062
This is just about the same code. It appends a row to the destination sheet. Do you want it to append or overwrite. It doesn't add any rows beyond the one that's appended.
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')
}
}
I am not getting an extra row.
Here's what the destination sheet looks like after three executions.
Upvotes: 1