¿Cómo puedo hacer que este complete el rango definido en el código?
Entiendo que una vez que lo obtengo, tengo que iterar sobre el rango para establecer las fórmulas, pero no puedo entender cómo hacerlo:
let formulas = boqPipeworkSheet.getRange(7, 1, 1, 8).getFormulasR1C1(); let rngFormulas = boqPipeworkSheet.getRange(7, 8, boqPipeworkSheet.getLastRow(), 8) rngFormulas.forEach(c => rngFormulas(c).setFormulas(formulas)) Por supuesto, me da un error porque hay mucho que aprender en forEach y mucho más.
Aprecia tu tiempo.
En su situación, ¿qué tal la siguiente modificación?
var src = boqPipeworkSheet.getRange(7, 1, 1, 8); var dst = boqPipeworkSheet.getRange(7, 8, boqPipeworkSheet.getLastRow(), 8); src.copyTo(dst, SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false); Si desea copiar las mismas fórmulas de boqPipeworkSheet.getRange(7, 1, 1, 8) con el mismo rango, puede usar la siguiente modificación.
var src = boqPipeworkSheet.getRange(7, 1, 1, 8); var dst = boqPipeworkSheet.getRange(7, 8, boqPipeworkSheet.getLastRow(), 8); dst.setFormulas(Array(dst.getNumRows()).fill(src.getFormulas()[0])); Cuando vi su script, de let rngFormulas = boqPipeworkSheet.getRange(7, 8, boqPipeworkSheet.getLastRow(), 8) , pensé que quería copiar la fórmula de A7:G7 a H8:O . Pero si desea copiar la fórmula de A7:G7 a A8:G , puede usar la siguiente modificación. Como secuencia de comandos de muestra, me gustaría agregar esto porque pensé que este método podría ser útil para otros usuarios.
var src = boqPipeworkSheet.getRange(7, 1, 1, 8); var dst = boqPipeworkSheet.getRange(8, 1, boqPipeworkSheet.getLastRow() - 7, 8); src.copyTo(dst, SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);Me perdí bastante en tus coordenadas. Por favor, ponga los que necesita.
notación: (fila del número 1, columna del número 1)
Lo que hace es copiar fórmulas de la celda (7, 1) a la (7, 8).
Luego los pone en cada fila desde la fila 8 hasta la última fila. La primera fila es (8, 1) a (8, 8).
const formulas = boqPipeworkSheet.getRange(7, 1, 1, 8).getFormulasR1C1(); const lastRow = boqPipeworkSheet.getLastRow(); for (let i = 8; i <= lastRow; i++) { const rngFormulas = boqPipeworkSheet.getRange(i, 1, 1, 8) rngFormulas.setFormulasR1C1(formulas); }¡Pregunta si necesitas más aclaraciones!