Tengo un código de la siguiente manera:
function DetailFacture2() { var ss = SpreadsheetApp.getActive(); var DetailDEVIS = SpreadsheetApp.setActiveSheet(ss.getSheetByName('DetailDEVIS')); var FACTUREDevis = SpreadsheetApp.setActiveSheet(ss.getSheetByName('FACTUREDevis')); var DetailFactureDevis = SpreadsheetApp.setActiveSheet(ss.getSheetByName('DetailFactureDevis')); var lastrowpaste = FACTUREDevis.getLastRow(); var numrow = FACTUREDevis.getRange(lastrowpaste,13).getValue() var lastrowpaste2 = DetailFactureDevis.getLastRow() - numrow +2; var data = DetailDEVIS.getDataRange().getValues(); var DetailD = FACTUREDevis.getRange(lastrowpaste,2).getValue(); for(var i = 0; i<data.length;i++){ if(data[i][1] == DetailD){ //[1] because column B var firstrowcopy = i+1; Logger.log(firstrowcopy) return (firstrowcopy) } } };Devuelve el valor correcto, pero ¿cómo se usa "firstrowcopy" como una variable fija? Me gustaría usar de la siguiente manera:
function DetailFacture2() { var ss = SpreadsheetApp.getActive(); var DetailDEVIS = SpreadsheetApp.setActiveSheet(ss.getSheetByName('DetailDEVIS')); var FACTUREDevis = SpreadsheetApp.setActiveSheet(ss.getSheetByName('FACTUREDevis')); var DetailFactureDevis = SpreadsheetApp.setActiveSheet(ss.getSheetByName('DetailFactureDevis')); var lastrowpaste = FACTUREDevis.getLastRow(); var numrow = FACTUREDevis.getRange(lastrowpaste,13).getValue() var lastrowpaste2 = DetailFactureDevis.getLastRow() - numrow +2; var data = DetailDEVIS.getDataRange().getValues(); var DetailD = FACTUREDevis.getRange(lastrowpaste,2).getValue(); for(var i = 0; i<data.length;i++){ if(data[i][1] == DetailD){ //[1] because column B var firstrowcopy = i+1; var source = DetailDEVIS.getRange(firstrowcopy,1,numrow-1); var destination = DetailFactureDevis.getRange(lastrowpaste2,3); source.copyTo(destination); } } };Pero, como era de esperar, no puede funcionar mientras se repite...
No estoy seguro si entiendo tu pregunta también. El código no se ve bien. Aquí es sólo mi conjetura. Intenta cambiar las últimas líneas de esta manera:
// ... var firstrowcopy = 0; for (var i = 0; i < data.length; i++){ if(data[i][1] == DetailD){ //[1] because column B firstrowcopy = i+1; break; } } var source = DetailDEVIS.getRange(firstrowcopy,1,numrow-1); var destination = DetailFactureDevis.getRange(lastrowpaste2,3); source.copyTo(destination); }