Estoy tratando de copiar las primeras 7 columnas de la hoja de cálculo 1 (369) y la hoja de cálculo 2 (370) y pegarlas en la hoja de cálculo 3 con el número 369 y 370 junto a los datos, pero sigo recibiendo este error y no sé por qué.
function MoveCode(){ wn1=369; wn2=370; wn3=371; wn4=372; const ssActive = SpreadsheetApp.getActive(); const sshActive = ssActive.getSheetByName('Sheet1'); const ss369 = SpreadsheetApp.openById("1A3tJiIEkDP_5R6mEY25IeAsO2XV_oveJwnUovxRd-1U");//or url whatever const dsh369 = ss369.getSheetByName('Sourcing'); const lastRow369 = dsh369.getLastRow();//getting the last row //Adding the week number to the first row sshActive.getRange("A2").setValue("Week Number") var number369 = (dsh369.getLastRow()-2).toString(); number369 = number369.replace(".0",""); sshActive.getRange(3,1,number369).setValue(wn1); Logger.log(number369); const vs369 = dsh369.getRange(2, 1, lastRow369 - 1, 7).getValues();//we are getting the data and storing it in vs sshActive.getRange(2, 2, vs369.length, vs369[0].length).setValues(vs369);//we are pasting the code to the new sheet from dsh const ssActive370 = SpreadsheetApp.getActive(); const sshActive370 = ssActive370.getSheetByName('Sheet1'); const ss370 = SpreadsheetApp.openById("1HL1OH0ghlQCS7fMZsiVKI9ELab8HRVXW6QtruPiKedY"); const dsh370 = ss370.getSheetByName('Sourcing'); const lastRow370 = dsh370.getLastRow();//getting the last row var number370 = (dsh370.getLastRow()-2).toString(); number370 = number370.replace(".0",""); Logger.log(number369); Logger.log(number370); ssActive370.getRange(number369+3,1,number370).setValue(wn2); Logger.log(number370); const vs370 = dsh370.getRange(2, 1, lastRow370 - 1, 7).getValues();//we are getting the data and storing it in vs ssActive370.getRange(number369+3, 2, vs370.length, vs370[0].length).setValues(vs370);//we are pasting the code to the new sheet from dsh }No estoy muy seguro de por qué me está dando ese error, porque estoy usando (número, número, número) , creo .
El error está en la línea 34.
Si necesita más información por favor hágamelo saber
Probar:
ssActive370.getRange(parseInt(number369+3),1,parseInt(number370)).setValue(wn2);Intenta hacer la copia de esta manera:
function MoveCode() { const ss369 = SpreadsheetApp.openById("1A3tJiIEkDP_5R6mEY25IeAsO2XV_oveJwnUovxRd-1U"); const ss370 = SpreadsheetApp.openById("1HL1OH0ghlQCS7fMZsiVKI9ELab8HRVXW6QtruPiKedY"); const ssActive = SpreadsheetApp.getActive(); const ssh = ssActive.getSheetByName('Sheet1'); const dsh369 = ss369.getSheetByName('Sourcing'); const dsh370 = ss370.getSheetByName('Sourcing'); const vs369 = dsh369.getRange(2, 1, dsh369.getLastRow() - 1, 7).getValues(); const vs370 = dsh370.getRange(2, 1, dsh370.getLastRow() - 1, 7).getValues(); ssh.getRange(2, 2, vs369.length, vs369[0].length).setValues(vs369); //SpreadsheetApp.flush();//you might want this ssh.getRange(ssh.getLastRow() + 1, 2, vs370.length, vs370[0].length).setValues(vs370);//you may have to reposition the starting row here }Dejé un par de cosas como poner el encabezado "Número de semana" en la columna A y algo que estabas haciendo con los wns en la parte superior que parecía innecesario. Pero la copia básica debe ser relativamente cercana a lo que desea.
Pensé que en su script, el error ocurre en ssActive370.getRange(number369+3,1,number370).setValue(wn2); y ssActive370.getRange(number369+3, 2, vs370.length, vs370[0].length).setValues(vs370); . Porque ssActive370 es el objeto de Class Spreadsheet de const ssActive370 = SpreadsheetApp.getActive(); . El método de "getRange" en Class Spreadsheet es solo getRange(a1Notation) . Pensé que esta es la razón de su problema de Exception: The parameters (String,number,String) don't match the method signature for SpreadsheetApp.Spreadsheet.getRange . Para usar getRange(row, column, numRows) y getRange(row, column, numRows, numColumns) , se requiere usar el método de Class Sheet.
Cuando desee eliminar este problema, ¿qué tal la siguiente modificación?
const ssActive370 = SpreadsheetApp.getActive(); const sshActive370 = ssActive370.getSheetByName('Sheet1'); const ssActive370 = SpreadsheetApp.getActive().getSheetByName('Sheet1');