Tengo una función onEdit que crea una matriz y usa Range.setValues para "mover" esa fila a otra hoja de trabajo.
function onEdit(e) { const src = e.source.getActiveSheet(); const r = e.range; if (r.getColumn() == 2 && r.getRow() == 2 && r.getWidth() == 1 && r.getHeight() == 1) { var sheetName; switch (e.value) { case "Pending": sheetName = "Pending"; break; case "In Hand": sheetName = "In Hand"; break; } if (sheetName) { const dest = e.source.getSheetByName(sheetName); const srcRange = src.getRange(r.getRow(),1,1,18); const formulas = srcRange.getFormulas()[0]; const values = srcRange.getValues(); formulas.forEach((formula,i) => { if(formula !== '') values[0][i] = formula; }); dest.getRange(dest.getLastRow()+1,1,1,18)).setValues(values); src.deleteRow(r.getRow(); } } }La función funciona, pero por el momento solo verifica la Columna 2 - Fila 2 que se muestra aquí:
Si cambio el siguiente estado no pasa nada:
Sé que esto se debe a que la función no verifica toda la columna, solo verifica el cambio de valor en la Hoja activa - Columna 2 - Fila 2.
Necesito ayuda para ajustar el rango y asegurarme de que se verifique toda la Columna 2, y si se cambia un estado en la Fila 5, los datos de la Fila 5 se mueven, y así sucesivamente.
Reemplace r.getRow() == 2 por r.getRow() >= 2 en la siguiente línea
if (r.getColumn() == 2 && r.getRow() == 2 && r.getWidth() == 1 && r.getHeight() == 1) {Lo anterior porque la primera fila tiene los encabezados de columna y es muy poco probable que desee que la fila de encabezados se mueva en caso de que se edite el encabezado de columna de la columna B.
Recursos
La condición if en su código solo funcionará si el usuario editó una celda en la Fila 2 Columna B de su hoja debido a esta condición r.getRow() == 2 .
Si desea verificar la columna completa a partir de la fila 2, cambie su código
De:
if (r.getColumn() == 2 && r.getRow() == 2 && r.getWidth() == 1 && r.getHeight() == 1) {A:
if (r.getColumn() == 2 && r.getRow() > 1 && r.getWidth() == 1 && r.getHeight() == 1) {Esto garantizará que el script solo aplique la lógica de "mover" si se edita una celda en la columna B a partir de la fila 2.