n8n Google Sheets: Guía Completa de Automatización 2026

Google Sheets es uno de los almacenes de datos más versátiles del mundo: gratuito, colaborativo y accesible desde cualquier lugar. Cuando se combina con n8n, se convierte en un potente backend para CRMs ligeros, registros de eventos, paneles de informes y pipelines de datos.

En esta guía cubrimos la configuración de credenciales (tanto OAuth2 como Cuenta de Servicio), todas las operaciones de nodos, los triggers y cuatro flujos de trabajo completos del mundo real que puedes importar y adaptar hoy mismo.

⚡ Genera este flujo de trabajo al instante

Visita Scriflow, describe tu automatización de Google Sheets en inglés sencillo y obtén un archivo JSON de n8n listo para importar, sin necesidad de configuración manual.

Configuración de las credenciales de Google Sheets

Tienes dos formas de autenticarte con Google Sheets desde n8n:

MétodoIdeal paraComplejidad de la configuración
OAuth2 (cuenta de Google)Acceder a hojas de cálculo en tu cuenta personal o de GSuiteMedia: requiere un proyecto de Google Cloud + pantalla de consentimiento de OAuth
Service AccountAutomatización de servidor a servidor, sin necesidad de interacción del usuarioMedia: requiere compartir la hoja de cálculo con el correo electrónico de la cuenta de servicio

Opción A: Configuración de OAuth2

  1. Ve a console.cloud.google.com → Crea un nuevo proyecto (o selecciona uno existente).
  2. Habilita la Google Sheets API y la Google Drive API.
  3. Ve a APIs & Services → Credentials → Create OAuth 2.0 Client ID.
  4. Establece el tipo de aplicación en Web Application. Añade la URL de callback de n8n como URI de redireccionamiento autorizado.
  5. Descarga el ID de cliente y el secreto de cliente.
  6. En n8n: Credentials → New → Google Sheets OAuth2 API → introduce el ID de cliente y el secreto → Conectar.

Opción B: Configuración de la cuenta de servicio

  1. En Google Cloud Console → Credentials → Create Service Account.
  2. Descarga el archivo de clave JSON para la cuenta de servicio.
  3. En n8n: Credentials → New → Google Service Account → pega el contenido de la clave JSON.
  4. Importante: Comparte tu hoja de cálculo de Google con el correo electrónico de la cuenta de servicio (name@project.iam.gserviceaccount.com) con acceso de Editor.
💡 ¿Cuál elegir?

Utiliza Service Account para flujos de trabajo automatizados del servidor (sin caducidad del token, sin necesidad de interacción con la interfaz de usuario). Utiliza OAuth2 cuando necesites actuar como un usuario específico o acceder a hojas de cálculo privadas de tu propiedad.

Resumen de las operaciones de los nodos

El nodo n8n Google Sheets cubre todas las operaciones CRUD más la gestión a nivel de hoja de cálculo:

Get Rows
Operación de lectura
Lee todas las filas o filtra por valor de columna. Devuelve cada fila como un elemento n8n.
Append Row
Operación de escritura
Añade nuevas filas en la parte inferior de la hoja. Asigna automáticamente los campos JSON a los encabezados de las columnas.
Update Row
Operación de escritura
Modifica las filas existentes. Identifica la fila por una columna clave (por ejemplo, ID o correo electrónico).
Delete Row
Operación de escritura
Elimina filas por número de fila o haciendo coincidir un valor de columna.
Clear
Operación de escritura
Borra todos los valores de un rango manteniendo intacto el formato.
Create Spreadsheet
Gestión
Crea mediante programación una nueva hoja de cálculo y obtén su ID para los nodos posteriores.

Lectura de filas de una hoja

Para leer datos, necesitas el ID de la hoja de cálculo (que se encuentra en la URL: docs.google.com/spreadsheets/d/[ID]/edit) y el nombre de la hoja:

Resource: Sheet Operation: Get Rows Spreadsheet ID: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms Sheet Name: Leads Filters: Column: Status Value: New // optional — filter rows by column value

Cada fila se convierte en un elemento n8n separado. Los encabezados de las columnas en la fila 1 se convierten en los nombres de los campos JSON en la salida:

// Sheet columns: Name | Email | Status | Created // Output item: { "Name": "Alice Johnson", "Email": "alice@example.com", "Status": "New", "Created": "2026-03-10", "row_number": 2 // always included for update/delete operations }

Añadir filas

La operación Append Row es el caballo de batalla de la automatización de Google Sheets. Asigna automáticamente los campos JSON entrantes a los encabezados de las columnas:

Resource: Sheet Operation: Append Row Spreadsheet ID: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms Sheet Name: Form Submissions Columns: Name: {{ $json.name }} Email: {{ $json.email }} Message: {{ $json.message }} Submitted At: {{ $now.toISO() }} Source: {{ $json.utm_source ?? 'direct' }}
💡 Consejo para la asignación de columnas

Los nombres de las columnas en el nodo deben coincidir exactamente con la fila de encabezado en tu hoja de cálculo (distingue entre mayúsculas y minúsculas). Si la hoja tiene una columna "First Name", utiliza First Name, no firstName o first_name.

Actualización de filas

Para actualizar una fila, debes identificarla. La forma más fiable es utilizar el row_number devuelto por una operación anterior de Get Rows:

Resource: Sheet Operation: Update Row Spreadsheet ID: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms Sheet Name: Leads Row Number: {{ $('Get Lead Row').item.json.row_number }} Columns: Status: Contacted Last Updated: {{ $now.toISO() }} Notes: {{ $json.callNotes }}

Triggers de Google Sheets

El nodo Google Sheets Trigger sondea tu hoja de cálculo en busca de cambios y activa tu flujo de trabajo cuando se añaden o actualizan datos. Esto permite la automatización reactiva sin un servicio de webhook de terceros.

Trigger Event: Row Added // or "Row Updated" Spreadsheet ID: 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms Sheet Name: Orders Poll Time: Every minute // minimum polling interval
📌 Nota sobre el sondeo

Google Sheets no admite de forma nativa los webhooks. El nodo de trigger sondea la hoja cada minuto (o el intervalo que hayas configurado). Para reacciones casi en tiempo real, combina un webhook de envío de Google Forms con el nodo Sheets para las escrituras.

Ejemplos de flujos de trabajo reales

Flujo de trabajo 1: Envíos de formularios → CRM de Google Sheets

Captura automáticamente los envíos de formularios del sitio web en un CRM de Google Sheets:

  1. Webhook Trigger: recibe el envío del formulario desde tu sitio.
  2. Set Node: normaliza y enriquece los datos (añade la marca de tiempo, el estado predeterminado).
  3. Google Sheets → Append Row: añade el lead a la hoja "Leads".
  4. Gmail/SendGrid: envía un correo electrónico de bienvenida al nuevo lead.
  5. Slack: notifica al equipo de ventas en #new-leads.

Flujo de trabajo 2: Hoja de cálculo para informes por correo electrónico

Cada lunes por la mañana, extrae los datos de ventas de la semana pasada y envía por correo electrónico un informe formateado:

  1. Schedule Trigger: lunes a las 8 AM.
  2. Google Sheets → Get Rows: lee todas las filas de la hoja "Sales" donde la fecha corresponde a los últimos 7 días.
  3. Code Node: agrega los totales (suma los ingresos, cuenta los acuerdos, calcula la tasa de conversión).
  4. Gmail → Send Email: envía un informe con formato HTML al equipo.
// Code node: aggregate sales data const items = $input.all(); const total = items.reduce((sum, item) => sum + item.json.Revenue, 0); const deals = items.length; const avgDeal = total / deals; return [{ json: { total_revenue: total.toFixed(2), deal_count: deals, avg_deal_size: avgDeal.toFixed(2), week_start: items[0].json.Date, week_end: items[items.length - 1].json.Date } }];

Flujo de trabajo 3: Sincronización de la base de datos → Google Sheets

Mantén una hoja de Google sincronizada con una base de datos PostgreSQL o MySQL para la visibilidad de las partes interesadas:

  1. Schedule Trigger: se ejecuta cada hora.
  2. Postgres Node: consulta los registros más recientes.
  3. Google Sheets → Clear: borra el rango de datos (no los encabezados) para evitar duplicados.
  4. Google Sheets → Append Row: escribe todas las filas de datos nuevos en bloque.

Flujo de trabajo 4: Typeform → Sheets → Notificación de Slack

  1. Typeform Trigger: se activa con cada respuesta a la encuesta.
  2. Google Sheets → Append Row: registra la respuesta con la marca de tiempo y la puntuación.
  3. IF Node: comprueba si la puntuación NPS es ≤ 6 (detractor).
  4. Slack (rama verdadera): alerta al equipo de éxito del cliente para que haga un seguimiento.

Consejos para grandes conjuntos de datos

  • Utiliza filtros en la lectura: Siempre filtra en el nivel del nodo Sheets en lugar de leer todas las filas y filtrar en n8n. Esto reduce el uso de la cuota de la API.
  • Añade por lotes: La operación Append Row puede procesar varios elementos en una sola llamada a la API. n8n gestiona esto automáticamente cuando los nodos ascendentes producen varios elementos.
  • Archiva los datos antiguos: Google Sheets tiene un rendimiento deficiente más allá de ~50k filas. Utiliza una operación Delete Row o mueve las filas antiguas a una hoja de archivo periódicamente.
  • Utiliza rangos con nombre: Define rangos con nombre en Google Sheets (por ejemplo, "SalesData") y haz referencia a ellos por su nombre en lugar de rangos de celdas codificados como A:Z.
  • Supervisa la cuota de la API: La API de Google Sheets tiene un límite de 300 solicitudes de escritura por minuto. Añade nodos Wait si estás escribiendo muchas filas en rápida sucesión.

Preguntas frecuentes

¿Puede n8n crear una nueva hoja (pestaña) dentro de una hoja de cálculo existente?
No directamente con el nodo Google Sheets. Utiliza el nodo HTTP Request para llamar al endpoint batchUpdate de la API de Google Sheets con una solicitud addSheet. Esto te da control total sobre la creación, el nombre y el posicionamiento de las pestañas.
¿Cómo busco una fila por correo electrónico y la actualizo?
Utiliza Get Rows con un filtro en la columna Email para encontrar la fila coincidente. El resultado incluye row_number. Pasa esto al campo Número de fila de la operación Update Row para modificar solo esa fila específica.
¿Qué ocurre si añado a una hoja y los encabezados no coinciden?
Los campos que no coinciden se ignoran silenciosamente. Si proporcionas un nombre de campo que no existe como encabezado de columna, n8n lo omite. La fila de encabezado de la hoja siempre se utiliza como fuente de verdad para la asignación de columnas.
¿Puedo generar un flujo de trabajo de n8n de Google Sheets automáticamente?
Sí. Ve a Scriflow, describe lo que quieres (por ejemplo, "Cuando se añade una nueva fila a mi hoja de Google, envía una notificación de Slack y añade el contacto a HubSpot"), y obtén un JSON de n8n completo en segundos.