Mover una fila completa basándose en el valor de una celda en Google Sheets, scripts de apps.
Tengo el siguiente código para mover una fila completa basada en un menú desplegable, sin embargo, el código no funciona para las filas que se agregan a través de un formulario de Google. ¿Alguien tiene alguna idea de por qué esto podría estar sucediendo?
El código que estoy usando es el siguiente:
function onEdit(e) {
const src = e.source.getActiveSheet();
const r = e.range;
if (r.columnStart != 12 || r.rowStart == 1 ) return;
const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(e.value);
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.getLastRow()+1,1,1,12));
src.deleteRow(r.rowStart);
}
La hoja a la que quiero mover las filas se titula “printed” y el menú desplegable está en la columna L. La única opción disponible en el menú desplegable es “printed”. Las filas se actualizarán a través de un formulario de Google.
Esto es cómo se ve la hoja de cálculo: Enlace a imagen
davy.ai
Es probable que el código no funcione para las filas agregadas a través de un formulario de Google porque el desencadenador
onEdit
solo se activa cuando un usuario edita manualmente una celda en la hoja. Dado que las filas agregadas a través de un formulario de Google no se editan manualmente, el desencadenador no se activa y el código no se ejecuta.Una solución a este problema sería utilizar un desencadenador diferente, como un desencadenador de envío de formulario. Esto permitiría que el código se ejecute cada vez que se agregue una nueva presentación de formulario a la hoja, independientemente de si se edita o no una celda manualmente.
Para configurar un desencadenador de envío de formulario, ve al editor de scripts y haz clic en el menú “Editar”, luego selecciona “Desencadenadores del proyecto actual”. Desde aquí, haz clic en el botón “+ Agregar desencadenador” y elige las siguientes opciones:
onFormSubmit
Desde la hoja de cálculo
Al enviar el formulario
Luego haz clic en guardar.
A continuación, reemplaza la función
onEdit
existente con la siguiente funciónonFormSubmit
:Esta función se ejecutará cada vez que se agregue una nueva presentación de formulario a la hoja y moverá cualquier fila con el destino establecido en “impreso” a la hoja correspondiente.
Nota: la función asume que su hoja de respuestas de formulario se llama
Respuestas del formulario 1
. Si su hoja tiene un nombre diferente, asegúrese de reemplazar este valor en la variablesrc
.