Contenido
Tutorial de Google Sheets con n8n: leer, añadir y actualizar datos automáticamente
Google Sheets es una de las «bases de datos ligeras» más habituales: listas de inscripciones, pedidos, inventario y clientes. n8n puede leer, escribir y actualizar hojas de cálculo automáticamente, y activar flujos cuando llegan datos nuevos.
Preparación: autorización
- n8n Cloud: al crear las credenciales de Google Sheets, solo tienes que iniciar sesión en Google.
- Autohospedado: primero debes crear un cliente OAuth en Google Cloud y habilitar Google Sheets API. Consulta los pasos completos en Gestión de credenciales.
Formato de la hoja de cálculo
n8n toma la primera fila como nombres de columna y cada fila posterior como un registro (un item):
| Nombre | Sesión | Estado | |
|---|---|---|---|
| Juan Pérez | ming@example.com | 10/20 Taipéi | Confirmado |
| Ana López | hua@example.com | 10/27 Taichung | Pendiente de confirmación |
Al leerlas, cada fila se convierte en:
{ "row_number": 2, "Nombre": "Juan Pérez", "Email": "ming@example.com", "Sesión": "10/20 Taipéi", "Estado": "Confirmado" }
Conviene que los nombres de columna sean breves y únicos. Evita usar celdas combinadas.
Operaciones habituales
En el nodo Google Sheets, elige una operación:
| Operación | Descripción |
|---|---|
| Get Row(s) | Lee filas. Puedes configurar filtros (por ejemplo, Estado = Pendiente de confirmación). |
| Append Row | Añade una fila al final. |
| Update Row | Busca una fila por una columna y la actualiza. |
| Append or Update Row | Actualiza la fila si la encuentra; si no, añade una nueva (la opción más habitual). |
| Delete Rows | Elimina filas. |
| Clear | Vacía la hoja de cálculo. |
| Create | Crea una hoja de cálculo o una pestaña nueva. |
Al elegir la hoja de cálculo y la pestaña, puedes seleccionarlas de la lista o pegar la URL de la hoja.
Asignación de campos
Al añadir o actualizar datos, Mapping Column Mode ofrece dos opciones:
- Map Each Column Manually: rellena cada campo con una expresión; por ejemplo, en «Nombre» escribe
{{ $json.name }}. - Map Automatically: asigna los datos automáticamente si los nombres de los campos de entrada coinciden con los de las columnas de la hoja.
Actualizaciones: qué columna usar para comparar
Update / Append or Update requiere que indiques Column to match on, por ejemplo, la columna «Email». Elige una columna cuyos valores no se repitan.
Detectar datos nuevos: Google Sheets Trigger
Google Sheets Trigger revisa periódicamente la hoja y se activa cuando se añade una fila o se modifica una fila. Es útil cuando quieres procesar automáticamente un pedido nuevo añadido a la hoja.
Ten en cuenta que funciona mediante sondeo (por ejemplo, comprueba la hoja cada minuto), así que no es instantáneo.
Ejemplo completo: automatizar inscripciones a un evento
Requisito: el usuario rellena un formulario de inscripción → los datos se escriben en una hoja de cálculo → se envía un correo de confirmación → se avisa al administrador.
[Form Trigger] ─▶ [Google Sheets: Append or Update] ─▶ [Send Email: confirmación] ─▶ [Telegram: aviso al administrador]
1. Form Trigger
Usa el formulario integrado de n8n; no necesitas Google Forms:
- Form Title:
Inscripción a la charla - Campos:
- Nombre (Text, obligatorio)
- Email (Email, obligatorio)
- Sesión (Dropdown: 10/20 Taipéi, 10/27 Taichung)
Al publicarlo, obtendrás la URL del formulario y podrás compartirla directamente.
2. Escribir en la hoja de cálculo
En el nodo Google Sheets, selecciona la operación Append or Update Row:
- Column to match on:
Email - Nombre:
{{ $json['Nombre'] }} - Email:
{{ $json.Email }} - Sesión:
{{ $json['Sesión'] }} - Estado:
Inscrito - Hora de inscripción:
{{ $now.toFormat('yyyy-MM-dd HH:mm') }}
Al comparar por Email, si una persona se inscribe varias veces, se actualizarán sus datos en lugar de añadir filas duplicadas.
3. Enviar el correo de confirmación
Usa el nodo Send Email o Gmail:
{{ $('Form Trigger').item.json['Nombre'] }}, te damos la bienvenida:
Gracias por inscribirte en la charla de la sesión «{{ $('Form Trigger').item.json['Sesión'] }}».
Hemos recibido tu inscripción. Te enviaremos un recordatorio el día anterior al evento.
Como el nodo anterior es Google Sheets, usa $('Form Trigger') para leer los datos originales del formulario.
4. Avisar al administrador
Añade un nodo Telegram o Slack y envía «Nueva inscripción: nombre / sesión».
Avanzado: enviar estadísticas de inscripciones cada día
[Schedule cada día a las 18:00] ─▶ [Google Sheets: Get Rows] ─▶ [Summarize: recuento por sesión] ─▶ [Send Email]
Configura el nodo Summarize: selecciona «Sesión» en Fields to Split By y Count en Aggregation. Así obtendrás el número de inscripciones de cada sesión.
Preguntas frecuentes
El proceso va lento o da errores cuando hay muchos datos
Google Sheets API tiene límites de velocidad. Para escribir muchos datos:
- Intenta escribir varias filas de una vez en lugar de llamar una vez por fila.
- Usa Loop Over Items para procesar lotes y añade Wait entre ellos.
Si tienes decenas de miles de registros, te conviene usar una base de datos de verdad (PostgreSQL o MySQL) o Data Tables, integrado en n8n (disponible según la versión).
Los números leídos se convierten en texto
El formato de las celdas de la hoja afecta a los resultados de lectura. Antes de comparar o calcular, conviértelos con Number().
No se encuentra un campo
Comprueba que la primera fila contenga los nombres de columna y que no haya espacios sobrantes antes o después. Si cambias los nombres de las columnas, vuelve a cargar los campos en el nodo.
Actualizado 12 de octubre de 2026