Cómo cortar filas automáticamente con casillas en Google Sheets

En este tutorial te voy a enseñar cómo crear una función en Google Apps Script para cortar una fila de una hoja y pegarla en otra automáticamente al hacer clic en una casilla de verificación. Esta técnica es súper útil para mover datos sin duplicarlos, por ejemplo, cuando quieres pasar prospectos a una hoja de clientes. Además, te mostraré cómo organizar tu código y usar activadores como onEdit para que todo funcione sin que tengas que hacer nada manualmente.

Si prefieres seguir este tutorial en video, te lo dejo aquí:

Antes de continuar, es importante que hayas visto la primera parte de este tutorial, donde explico cómo copiar filas con y sin formato, cómo activar funciones desde menús personalizados y cómo trabajar con casillas de verificación. Aquí partimos de ese código base para hacer la función de cortar fila.

¿Qué significa cortar una fila en Google Sheets?

Cortar una fila es básicamente copiar toda la fila a otra hoja y luego eliminarla de la hoja original. Esto es diferente a copiar y pegar porque no quieres duplicar la información, sino moverla. Por ejemplo, cuando un prospecto se convierte en cliente, puedes mover su fila a la hoja de clientes para mantener un control ordenado.

Cómo organizar el código en Google Apps Script

Antes de escribir la función, te recomiendo organizar tu código para que sea más fácil de mantener. Yo uso la opción “Plegar todo” en el editor de Apps Script (atajo: Ctrl + A y luego F1) para minimizar todas las funciones y trabajar con más orden. Además, agrupo los activadores al final del archivo para tener todo claro.

Función para cortar fila al marcar una casilla

La función que vamos a usar se llama cortarFilaActualConCasilla. Se activa cuando marcas una casilla de verificación en la hoja origen. Esta función copia la fila completa a la hoja destino y luego elimina la fila original para evitar duplicados.

function cortarFilaActualConCasilla(e) {
  const hojaOrigen = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("origen");
  const hojaDestino = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("destino");
  const fila = e.range.getRow();
  const columna = e.range.getColumn();

  // Validar que la casilla esté en la columna correcta (por ejemplo, columna 1)
  if (columna !== 1) return;

  // Validar que la casilla esté marcada (true)
  const valor = e.range.getValue();
  if (valor !== true) return;

  // Obtener los valores de la fila completa
  const datos = hojaOrigen.getRange(fila, 1, 1, hojaOrigen.getLastColumn()).getValues();

  // Pegar en la siguiente fila vacía de la hoja destino
  const ultimaFilaDestino = hojaDestino.getLastRow() + 1;
  hojaDestino.getRange(ultimaFilaDestino, 1, 1, datos[0].length).setValues(datos);

  // Borrar la fila original para cortar
  hojaOrigen.deleteRow(fila);
}

Desglose paso a paso de la función

  • hojaOrigen y hojaDestino: definimos las hojas desde donde sacamos y donde pegamos la fila.
  • fila y columna: detectamos qué celda fue editada para validar que es la casilla correcta.
  • Validaciones: confirmamos que la edición fue en la columna de las casillas y que la casilla fue marcada (no desmarcada).
  • getValues(): obtenemos todos los datos de la fila.
  • setValues(): pegamos los datos en la hoja destino en la siguiente fila vacía.
  • deleteRow(): eliminamos la fila original para que no quede duplicada.

Cómo usar el activador onEdit para automatizar

Para que la función se ejecute automáticamente cuando marcas una casilla, usamos el activador simple onEdit. No necesitas configurar nada extra, solo crea esta función y llama dentro a cortarFilaActualConCasilla pasando el evento e.

function onEdit(e) {
  cortarFilaActualConCasilla(e);
}

Consideraciones importantes para que todo funcione bien

  • Este método funciona solo dentro del mismo archivo de Google Sheets. Si quieres mover datos entre archivos diferentes, hay que usar otro método (por ejemplo, copiar valores sin formato).
  • La casilla de verificación debe estar siempre en una columna específica (en el ejemplo, la columna A).
  • Cuando eliminas filas, asegúrate de que no afecte otras fórmulas o referencias que dependan de esas filas.
  • Recuerda que si tienes filtros o protección de hoja, puede afectar el comportamiento al eliminar filas.

Ejemplo práctico: estructura de las hojas

Imagina que tienes esta estructura en tu hoja origen:

✔ProductoPrecio
☐Zapato$100
☐Mocasín$120

Cuando marques la casilla del mocasín, esa fila se moverá automáticamente a la hoja destino y desaparecerá de la hoja origen, manteniendo tus datos organizados y sin duplicados.

Pasos para probarlo tú mismo

  • Abre tu archivo de Google Sheets y crea dos hojas llamadas “origen” y “destino”.
  • En la hoja “origen”, agrega casillas de verificación en la columna A (puedes hacerlo desde el menú Insertar > Casilla de verificación).
  • Abre el editor de Apps Script (Extensiones > Apps Script) y pega el código de la función cortarFilaActualConCasilla y el activador onEdit.
  • Guarda el proyecto y recarga tu hoja de cálculo para que los cambios se apliquen.
  • Marca una casilla en la hoja “origen” y observa cómo la fila se mueve automáticamente a la hoja “destino”.

Conclusión

En este tutorial aprendiste a cortar filas automáticamente al marcar una casilla usando Google Apps Script y el activador onEdit. Esta técnica te ayuda a mover datos entre hojas sin duplicarlos, lo que es perfecto para procesos como pasar prospectos a clientes o cualquier flujo de trabajo que requiera mover información de forma ordenada.

Como próximos pasos, podrías adaptar esta función para que solo copie ciertas columnas específicas, o para que funcione con múltiples condiciones (por ejemplo, solo cortar si se cumplen varias casillas). También puedes combinarlo con validaciones de datos o filtros para hacerlo aún más potente.

Si quieres profundizar más en Google Apps Script y automatizaciones con Google Sheets, te recomiendo inscribirte en mi academia donde tenemos cursos completos y soporte personalizado.

Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.