Necesito crear una función que agregue filas con fórmulas copiadas de las filas anteriores. Después de que se inicie el script, debería dar como resultado un número exacto (establezca 5 en este código) de filas en blanco al final de la hoja.
El código que logré crear cuenta la cantidad de filas que se deben agregar, pero agrega solo una fila con fórmulas copiadas al final.
Ayúdenme a editar este código para multiplicar el resultado de la función por el parámetro "rowstoadd".
function autoaddRows() { var sheet = SpreadsheetApp.getActive().getSheetByName('Harmonogram'); var range = sheet.getRange("B2:B").getValues(); var lastRowB = range.filter(String).length + 2; var lastRowA = sheet.getLastRow(); var blanknrows = sheet.getLastRow() - lastRowB; if (blanknrows < 5) { let rowstoadd = 5 - blanknrows; Browser.msgBox(rowstoadd); let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let lastRowIndex = sheet.getLastRow(); let existingRange = getRowRange(sheet, lastRowIndex); sheet.insertRowAfter(lastRowIndex); let newRange = getRowRange(sheet, ++lastRowIndex); existingRange.copyTo(newRange); newRange.setFormulas(newRange.getFormulas()); newRange.clearNote(); } function getRowRange(sheet, rowIndex) { return sheet.getRange(rowIndex, 1, 1, sheet.getLastColumn()); } }Creo que su objetivo es el siguiente.
En este caso, ¿qué tal el siguiente script modificado?
function autoaddRows() { var addRows = 5; var sheet = SpreadsheetApp.getActive().getSheetByName('Harmonogram'); var range = sheet.getRange("B2:B").getValues(); var lastRowB = range.filter(String).length + 1; var lastRow = sheet.getLastRow(); var blanknrows = lastRow - lastRowB; var diff = addRows - blanknrows; if (diff > 0) { sheet.insertRowsAfter(lastRow, diff); // var range = sheet.getRange("B" + lastRowB); // range.copyTo(range.offset(1, 0, diff + 1), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false); var numberOfCol = sheet.getLastColumn() - 1; var range = sheet.getRange(lastRowB, 2, 1, numberOfCol); range.copyTo(range.offset(1, 0, diff + 1, numberOfCol), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false); range.clearNote(); } }newRange.clearNote(); se usa Entonces, también agrego range.clearNote(); . Si desea eliminarlo, elimínelo.