n8n y Google Sheets: buscar coincidencias por ID y actualizar columnas específicas
Crea un flujo de n8n con Google Sheets que compruebe IDs, actualice columnas específicas y envíe a revisión los casos sin coincidencias o con duplicados.

Comprobado con las fuentes citadas el .
Prepara tu integración de n8n con Google Sheets
Este tutorial de n8n con Google Sheets propone un flujo de práctica controlado: recibir una solicitud de actualización, contar las coincidencias exactas del ID, actualizar automation_status solo si hay una coincidencia única y añadir las excepciones a una hoja de revisión independiente. Los pasos y el código son una propuesta didáctica, con criterios de aceptación más adelante; no se aportan resultados de una ejecución real.
Empieza con un espacio de trabajo de n8n, una credencial de Google Sheets ya operativa y una copia de una hoja de cálculo para practicar. La creación de credenciales, la programación en producción, el procesamiento por lotes, el escalado y la optimización de cuotas quedan fuera del alcance. Prepara los siguientes datos de prueba antes de construir el flujo. La tabla Records de ejemplo ofrece datos sugeridos para practicar: conserva los IDs como texto. Envía cuatro solicitudes por separado, una por ejecución, con los valores A-001, A-002, A-999 y una cadena vacía en record_id, todas con automation_status establecido en ready. No incluyas A-999 en Records.
| Ubicación | Campos | Finalidad |
|---|---|---|
| Hoja Records | record_id, automation_status, team_notes | Datos operativos para practicar |
| Hoja Review | requested_id, proposed_value, classification, match_count | Revisión de excepciones |
| Solicitud | record_id, automation_status | Una actualización propuesta |
| record_id | automation_status | team_notes |
|---|---|---|
| A-001 | pending | Confirmar la dirección de entrega |
| A-002 | pending | A la espera de finanzas |
| A-002 | on_hold | Llamar antes del envío |
Creemos que conviene decidir qué columnas controla la automatización antes de conectar un nodo de escritura: facilita que un compañero revise el cambio previsto.
1. Prepara una solicitud y lee las filas

Usa identificadores de texto estables en record_id. Este ejercicio compara el texto de forma exacta: sin eliminar espacios, cambiar mayúsculas o minúsculas ni convertir a números. Por ejemplo, A-001 es distinto de a-001. Leer todas las filas permite mantener sencillo este pequeño ejercicio de práctica. Configura los primeros nodos como se indica a continuación.
- Añade Manual Trigger y, después, Edit Fields con el nombre Request.
- En Request, establece record_id en A-001 y automation_status en ready. Mantén una sola solicitud por ejecución.
- Añade el nodo Google Sheets con Get Row(s). Selecciona la credencial existente, el documento y la hoja Records; deja los filtros de lectura sin configurar.
- En Settings del nodo de lectura, activa Always Output Data.
La documentación de n8n describe la selección de credenciales existentes y la recuperación predeterminada de todas las filas con Get Row(s). Always Output Data genera un elemento vacío cuando un nodo no devuelve datos; el código de coincidencias debe excluir ese elemento de relleno.
Sources: n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/workflow-components/work-with-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub
2. Cuenta las coincidencias y dirige la solicitud

Añade un nodo Code después de la lectura y selecciona JavaScript, Run Once for All Items. n8n permite acceder a todos los elementos de entrada y hacer referencia al primer elemento de un nodo por su nombre. Introduce este código propuesto para el tutorial:
const request = $('Request').first().json; const id = request.record_id; const valid = typeof id === 'string' && id.trim().length > 0; const rows = $input.all().map(item => item.json).filter(row => Object.prototype.hasOwnProperty.call(row, 'record_id')); const count = valid ? rows.filter(row => typeof row.record_id === 'string' && row.record_id === id).length : 0; return [{ json: { requested_id: id ?? '', proposed_value: request.automation_status, classification: !valid ? 'invalid' : count === 1 ? 'unique' : count === 0 ? 'missing' : 'duplicate', match_count: count } }];
Añade un nodo Switch con reglas para classification igual a unique, missing, duplicate e invalid. Activa Extra Output como salida alternativa. Estas clasificaciones son convenciones de este artículo. Conecta unique a la rama de actualización; conecta las demás salidas y la salida alternativa a la revisión.

En nuestra opinión, una clasificación inesperada debe enviarse a revisión en lugar de a una ruta de escritura. Así, la salida alternativa responde a una decisión deliberada.
Sources: Using the Code node, n8n-docs/docs/build/work-with-data/transform-data/expression-reference/nodeinputdata.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/work-with-data/reference-data/reference-previous-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.switch.md at main · n8n-io/n8n-docs · GitHub
3. Limita la escritura y añade las excepciones

En la rama unique, configura el nodo Google Sheets de n8n siguiendo los pasos de abajo. Update Row actualiza filas existentes y el mapeo manual especifica columnas individuales. Edit Fields puede descartar los campos que no se hayan establecido explícitamente.
- Añade Edit Fields a la rama unique. Establece record_id a partir de requested_id y automation_status a partir de proposed_value.
- Activa la opción que descarta los demás campos de entrada.
- Añade Google Sheets Update Row para la hoja Records y selecciona record_id como columna de coincidencia.
- Elige Map Each Column Manually. Mapea solo record_id y automation_status; no uses Append or Update Row.
Omite team_notes por completo; elimina su mapeo en lugar de dejarlo vacío. Las pruebas de implementación aportadas de la rama master muestran que el mapeo manual de las versiones 4 y posteriores del nodo Google Sheets convierte los valores mapeados null o undefined en cadenas vacías. Otra función auxiliar omite las propiedades null o undefined que recibe, por lo que el mapeo previo importa. La documentación no tiene fecha y la implementación no está fijada a una versión concreta; las versiones instaladas y las etiquetas de la interfaz pueden variar.
Para la rama de revisión, usa Google Sheets Append Row en la hoja Review. Mapea manualmente requested_id, proposed_value, classification y match_count desde la salida de clasificación. Append Row añade una fila al final; este procedimiento de revisión es nuestro diseño sugerido, no una función integrada de revisión de excepciones.
Sources: n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts at master · n8n-io/n8n · GitHub, n8n/packages/nodes-base/nodes/Google/Sheet/v2/actions/sheet/update.operation.ts at master · n8n-io/n8n · GitHub
4. Verifica los cambios y resuelve problemas

Anota team_notes antes de cada ejecución, ejecuta el flujo y vuelve a leer la hoja. Usa estos criterios de aceptación sugeridos para tu flujo de n8n con Google Sheets.
| Solicitud | Hoja Records | Hoja Review |
|---|---|---|
| ID único | Solo cambia automation_status; team_notes se conserva | Sin entrada |
| ID sin coincidencias | Sin cambios | Entrada missing, recuento 0 |
| ID duplicado | Ambas filas coincidentes permanecen sin cambios | Entrada duplicate, recuento de coincidencias |
| ID vacío | Sin cambios | Entrada invalid, recuento 0 |
Si obtienes resultados inesperados, revisa Executions y usa Execute step para inspeccionar nodos individuales. Comprueba el documento y la hoja seleccionados, la ubicación de los encabezados y los datos, los tipos de los IDs, la salida de clasificación y los mapeos de escritura. Si sustituyes la lectura de todas las filas por una lectura filtrada, selecciona explícitamente Return All Matches: de lo contrario, la documentación de n8n indica que solo se devuelve el primer resultado coincidente.
Definir qué columnas controla la automatización reduce el alcance de la escritura, pero las fuentes aportadas no acreditan garantías transaccionales de unicidad, bloqueo ni detección de conflictos entre la búsqueda y la actualización. Por tanto, las ediciones simultáneas de celdas controladas por la automatización pueden quedar fuera de la protección de este flujo de práctica.
Sources: Sheet Within Document operations | Nodes | n8n Docs, n8n-docs/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/understand-workflows/workflow-components/work-with-nodes.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/build/flow-logic/handle-errors-gracefully.md at main · n8n-io/n8n-docs · GitHub


