En este tutorial vamos a aprender cómo evitar respuestas duplicadas en un formulario de Google Forms conectado a Google Sheets, usando Google Apps Script. La idea es asegurarnos de que, por ejemplo, un mismo número de identificación, correo electrónico o cualquier otro campo único no se registre más de una vez. Este método es muy útil para mantener tu base de datos limpia y evitar registros repetidos, sobre todo en formularios de ingreso de estudiantes, inscripciones a eventos o cualquier situación donde un dato no debe repetirse.
Si prefieres ver el tutorial en video, te lo dejo aquí arriba para que sigas el paso a paso visualmente.
¿Por qué evitar duplicados en Google Forms y Sheets?
Evitar duplicados en tus respuestas de Google Forms es fundamental cuando necesitas que cada registro sea único, como en el caso de inscripciones, encuestas o registros de productos. Permitir duplicados puede causar confusión y errores en tus reportes o bases de datos, y si bien Google Forms no tiene una función nativa para esto, con Google Apps Script lo podemos solucionar de manera sencilla.
Caso de uso: Registro de nuevos estudiantes
Vamos a ver el ejemplo de un formulario para el registro de nuevos estudiantes. Queremos que cada estudiante se registre solo una vez, usando un campo único como la cédula o el número de identificación. La lógica que vamos a implementar es: si un ID ya existe en el Sheet de respuestas, la nueva respuesta se elimina automáticamente.
Configurando el formulario y la hoja de respuestas
Empezamos desde cero con una hoja de cálculo vacía. Desde el menú de Google Sheets, seleccionamos Herramientas > Crear un formulario. Llamamos el formulario «Registro de nuevos estudiantes» y agregamos los campos que necesitamos, por ejemplo:
| Campo | Descripción |
|---|---|
| ID | Número de cédula o identificación (campo único) |
| Nombre | Nombre completo del estudiante |
Recuerda que puedes agregar más campos, pero lo más importante es definir cuál será el campo único que no debe repetirse. En este caso, usamos el ID.
Configurando permisos y pruebas en Google Forms
Un detalle importante es que ahora Google Forms requiere que publiques el formulario y ajustes los permisos para que cualquier persona con el enlace pueda responder. Ya no puedes hacer pruebas desde la vista previa, así que copia el enlace y ábrelo en una pestaña nueva para enviar respuestas de prueba.
Estructura de la hoja de respuestas
Cuando envías una respuesta desde el formulario, Google Forms la pega automáticamente en la última fila de la hoja de respuestas. La estructura típica de la hoja será:
| Marca temporal | ID | Nombre |
|---|---|---|
| 2024-06-13 10:00:00 | 12345 | Juan Pérez |
El campo que vamos a revisar para evitar duplicados es el ID, que está en la segunda columna.
Estrategia para evitar duplicados usando Google Apps Script
La lógica que uso (y recomiendo) es la siguiente:
- Dejamos que Google Forms envíe la respuesta normalmente a Sheets.
- Al recibir la respuesta, ejecutamos un script que revisa si el ID ya existe entre las respuestas anteriores.
- Si el ID ya estaba, elimina la nueva fila para evitar el duplicado.
Este método es sencillo y aprovecha la conexión nativa entre Forms y Sheets, sin tener que hacer integraciones manuales complicadas.
Creando el script para evitar duplicados
Ahora sí, vamos a la parte práctica. Desde Google Sheets, ve a Extensiones > Apps Script y crea una nueva función. A mí me gusta nombrar las funciones de forma clara, por ejemplo: evitarDuplicadosDesdeForms. El script se ejecutará cada vez que se reciba una respuesta en el formulario.
Configurando el activador
Guarda la función (aunque esté vacía por ahora) y ve a los Activadores (ícono de reloj). Añade un nuevo activador y selecciona que se ejecute al enviarse el formulario (on form submit). Así, el script se ejecutará automáticamente cada vez que alguien responda el formulario.
Pseudocódigo de la función
Antes de escribir el código, siempre hago un pequeño índice o pseudocódigo para tener clara la lógica:
- Obtener el valor del ID recién enviado.
- Traer todos los IDs anteriores de la hoja.
- Revisar si el ID ya estaba.
- Si ya estaba, borrar la nueva fila.
En este caso, el evento que recibe la función tiene un objeto especial (el evento e) que trae, entre otras cosas, el rango de la última respuesta. De ahí podemos extraer los valores enviados.
Estructura básica del Apps Script
Para acceder a los valores de la última respuesta y comparar el ID, la función recibe el evento e como argumento. Dentro de e.range podemos obtener el rango de la fila recién agregada y sus valores. Es fundamental saber en qué columna está el campo único (en este ejemplo, la columna 2).
Aquí te dejo el código completo
Este script revisa si el ID ya existe entre las filas anteriores. Si lo encuentra, elimina la nueva fila, evitando así el duplicado.
Conclusión y próximos pasos
Con este método puedes mantener tu base de datos de Google Sheets limpia y sin duplicados provenientes de Google Forms, simplemente con un poco de Apps Script y la lógica adecuada. Recuerda que puedes modificar el script para revisar otros campos únicos, o incluso combinar varios campos para evitar duplicados más complejos.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.