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):

NombreEmailSesiónEstado
Juan Pérezming@example.com10/20 TaipéiConfirmado
Ana Lópezhua@example.com10/27 TaichungPendiente 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ónDescripción
Get Row(s)Lee filas. Puedes configurar filtros (por ejemplo, Estado = Pendiente de confirmación).
Append RowAñade una fila al final.
Update RowBusca una fila por una columna y la actualiza.
Append or Update RowActualiza la fila si la encuentra; si no, añade una nueva (la opción más habitual).
Delete RowsElimina filas.
ClearVacía la hoja de cálculo.
CreateCrea 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