Tengo una columna en las hojas de Google que tiene un rango de fechas. Quiero insertar una fila en blanco después de las fechas que son domingos (solo me importa el día).
El pseudocódigo en el que estaba pensando es el siguiente:
Aquí está mi guión actual:
function addRows() { const ss = SpreadsheetApp.getActiveSpreadsheet() const sheet = ss.getActiveSheet(); const range = sheet.getDataRange(); const data = range.getValues(); for (let i = 1; i < data.length; i++) { const sheetDate = data[i][0]; const day = Utilities.formatDate(sheetDate, ss.getSpreadsheetTimeZone(), "EEEE"); if (day === "Sunday") { sheet.insertRowsAfter(i, 1); // I know this shouldn't be i, it should be the index of the row with the value "Sunday" } } }
Creo que el problema está en el primer argumento de la función insertRowsAfter()
. ¿Cuál debería ser este argumento?
Parece que cada inserción de nuevas filas después de una posición de fila, su rango de datos se ajusta, por lo tanto, también necesita ajustar la posición de la fila para las siguientes filas que contienen
Sunday
.
Tal vez puedas probar este script modificado a continuación:
function addRows() { const ss = SpreadsheetApp.getActiveSpreadsheet() const sheet = ss.getActiveSheet(); const range = sheet.getDataRange(); const data = range.getValues(); var count = 0; for (let i = 1; i < data.length; i++) { var row = i+1; //Get the sheet row number of every data from "data" variable const sheetDate = data[i][0]; const day = Utilities.formatDate(sheetDate, ss.getSpreadsheetTimeZone(), "EEEE"); if (day == "Sunday") { count += 1; //Count how many times "Sunday" was found var curRow = row+count; //Adjust the current row # curRow -= 1; //Subtract 1 row from the current row to match the sheet sheet.insertRowsAfter(curRow,1) } } }