Así que escribí este código que pegará las primeras 7 columnas de la hoja 2 (abastecimiento) a la hoja 1 (hoja 1) y también escribí una fórmula para cada celda, de modo que si el código en la hoja de abastecimiento cambia, el de la hoja 1 cambiará, pero cuando ¡Hice eso y obtuve #REF! en cada celda, así que fui a archivo -> configuración y cambié los cálculos -> Cálculo iterativo de desactivado a activado y el error desapareció, pero obtuve 0 en cada celda, que no es el valor correcto de la celda.
Aquí está el código.
function moveCode() { try { const ss1 = SpreadsheetApp.getActive(); const ss2 = SpreadsheetApp.openById("1A3tJiIEkDP_5R6mEY25IeAsO2XV_oveJwnUovxRd-1U");//or url whatever const ssh = ss1.getSheetByName('Sheet1'); const dsh = ss2.getSheetByName('Sourcing'); const lastRow = dsh.getLastRow(); if (lastRow < 2) return; var srange = dsh.getDataRange(); var formulas = []; var i=0; var j= 0; var row = null; // srange.getNumRows()-1 because skip the first row for( i=0; i<srange.getNumRows()-1; i++ ) { row = []; for( j=1; j<8; j++ ) { row.push("=Sheet1!"+String.fromCharCode(64+j)+(i+2).toString()); // A = 65 } formulas.push(row); } ssh.getRange(2,1,formulas.length,formulas[0].length).setValues(formulas); } catch(err) { Logger.log(err); } }Creo que hay algo mal con la fórmula, pero no estoy seguro de cuál es el problema.
Si necesita más explicación por favor hágamelo saber.
Gracias.
En su situación, ¿qué le parece usar IMPORTRANGE ? Cuando se modifica su secuencia de comandos, se convierte en la siguiente.
function moveCode() { try { const ss1 = SpreadsheetApp.getActive(); const ss2 = SpreadsheetApp.openById("1A3tJiIEkDP_5R6mEY25IeAsO2XV_oveJwnUovxRd-1U");//or url whatever const ssh = ss1.getSheetByName('Sheet1'); const dsh = ss2.getSheetByName('Sourcing'); const lastRow = dsh.getLastRow(); if (lastRow < 2) return; ssh.getRange(2, 1).setFormula(`=IMPORTRANGE("${ss2.getUrl()}","'Sourcing'!A2:G${lastRow}")`); } catch (err) { Logger.log(err); } }