Traté de transponer los datos de la columna a la fila. Pero este código se transpone a una sola fila. Por ejemplo: en mi código, solo los datos que están en la primera fila de Column3 Column4 Column5 Column6 de la hoja 1 (IJKL) se transfieren a la primera fila de fila1 fila2 fila3 fila4 de la hoja 2. Con esto, los datos contenidos en La columna 1 y la columna 2 de la hoja 1 (ABCDE) (FGH) se transfieren a la primera fila de la fila 2, la fila 5, la fila 6, la fila 7, la fila 8, la fila 9, la fila 10, la fila 10, la fila 11, la fila 12 de la hoja 2. Pero el problema es que los datos en la segunda fila de la columna 3, la columna 4, La columna 5 de la hoja 1 (MNOP) se transfiere a la segunda fila de la fila 2, fila 2, fila 3, fila 4 de la hoja 2, pero los datos de la columna 1 y la columna 2 de la hoja 1 (ABCDE) (FGH) no se mueven a la segunda fila de hoja2 fila5 fila6 fila7 fila8 fila9 fila10 fila10 fila11 fila12. Sin embargo, si ejecuta el script por segunda vez, volverá a suceder lo mismo. Ahora todo lo que quiero es mover los datos que están en (ABCDE) (FGH) en la Columna 1 y la Columna 2 de la hoja 1 a la primera fila de la fila 2 fila 5 fila 6 fila 7 fila 8 fila 9 fila 10 fila 10 fila 11 fila 12 y la segunda fila a la segunda fila ( M N O P).
Los datos contenidos en las columnas 1 y 2 de la hoja 1 deben trasladarse a la hoja 2 junto con los datos de las columnas 3 a 6 cada vez que se ejecuta el script.
![]()
function transpose() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName('Sheet1'); var sh2 = ss.getSheetByName('Sheet2'); var lr = sh2.getLastRow()+1; var gv1 = sh1.getRange('D10:G13').getValues().filter(r => r.some(e => e)); var gv2 = sh1.getRange('A2:A6').getValues(); var gv3 = sh1.getRange('B3:B5').getValues(); var result1 = []; var result2 = []; for(var col = 0; col < gv2[0].length; col++){ result1[col]=[]; for(var row = 0; row < gv2.length; row++){ result1[col][row] = gv2[row][col]; } } for(var col = 0; col < gv3[0].length; col++){ result2[col]=[]; for(var row = 0; row < gv3.length; row++){ result2[col][row] = gv3[row][col]; } var sv1 = sh2.getRange(lr,1,gv1.length,gv1[0].length).setValues(gv1); var sv2 = sh2.getRange(lr,5,result1.length,result1[0].length).setValues(result1); var sv3 = sh2.getRange(lr,10,result2.length,result2[0].length).setValues(result2); }No estoy seguro si entiendo el objetivo.
¿Quieres esto?
Aquí está el código que hace esto:
function transpose() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName('Sheet1'); var sh2 = ss.getSheetByName('Sheet2'); var lr = sh2.getLastRow()+1; var gv1 = sh1.getRange('D10:G13').getValues().filter(r => r.some(e => e)); var gv2 = sh1.getRange('A2:A6').getValues(); var gv3 = sh1.getRange('B3:B5').getValues(); var result1 = [...gv1[0], ...gv2.flat(), ...gv3.flat()]; var result2 = [...gv1[1], ...gv2.flat(), ...gv3.flat()]; var results = [result1, result2]; sh2.getRange(lr,1,results.length, results[0].length).setValues(results); } function coltorow() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName("Sheet Name");//add sheet name return [sh.getRange(1,col,sh.getLastRow(),1).getValues().flat()];//edit col }