Expresiones y Mapeo de Datos
Las expresiones en n8n son una herramienta fundamental para transformar y mapear datos entre nodos. Permiten acceder a valores de ítems, combinarlos y aplicar lógica. Dominar las expresiones es clave para construir workflows eficientes y adaptables a distintas fuentes de datos.

Fundamento de las Expresiones
Una expresión en n8n es un fragmento de código JavaScript que se evalúa en tiempo de ejecución para producir un valor. Se utilizan en campos de nodos donde se requiere un valor dinámico, como la URL de una solicitud HTTP, el cuerpo de un correo electrónico o el nombre de un archivo. En lugar de un valor estático, la expresión permite que el nodo utilice datos provenientes de nodos anteriores en el workflow.
El editor de expresiones de n8n, accesible mediante el icono de engranaje o haciendo clic en el campo y seleccionando 'Add Expression', ofrece autocompletado y una previsualización del resultado. Esto facilita la construcción y depuración de expresiones complejas. Las expresiones siempre están encerradas entre dobles llaves, por ejemplo, {{ $json.nombre }}.
Acceso a Datos de Nodos Anteriores
El objetivo principal de las expresiones es acceder a los datos de los ítems que fluyen a través del workflow. n8n proporciona objetos globales para facilitar este acceso:
$json: Contiene los datos del campo JSON del ítem actual. Es el objeto más común para acceder a las propiedades de los ítems. Ejemplo:{{ $json.nombreUsuario }}.$item: Representa el ítem completo, incluyendo sus campos JSON, binary y pairedItem. Su uso es menos frecuente que$jsonpara datos primarios, pero útil para acceder a metadatos o ítems binarios. Ejemplo:{{ $item.json.idProducto }}.$node: Permite acceder a los datos de un nodo específico anterior en el workflow, incluso si no es el nodo inmediatamente anterior. Se usa con el nombre del nodo. Ejemplo:{{ $node["Leer Datos CSV"].json.0.columnaA }}para obtener el primer ítem del nodo 'Leer Datos CSV'.$parameter: Accede a los valores de los parámetros de configuración del nodo actual. Útil para lógica interna o depuración. Ejemplo:{{ $parameter.url }}.
Cuando un nodo procesa múltiples ítems, $json y $item siempre se refieren al ítem que se está procesando en ese momento. Para acceder a un ítem específico de un nodo anterior cuando hay varios, se utiliza la notación de índice: {{ $node["NombreDelNodo"].json[0].propiedad }}.
Operadores y Funciones Comunes en Expresiones
Las expresiones no solo extraen valores, sino que también permiten transformarlos utilizando operadores JavaScript estándar y funciones auxiliares de n8n.
- Concatenación de cadenas: Se usa el operador
+. Ejemplo:{{ 'Hola ' + $json.nombre + ', tu ID es ' + $json.id }}. - Operadores aritméticos:
+,-,*,/,%. Ejemplo:{{ $json.precio * $json.cantidad }}. - Operadores lógicos:
&&(AND),||(OR),!(NOT). Útiles en nodos condicionales o para construir valores booleanos. Ejemplo:{{ $json.estado === 'activo' && $json.saldo > 0 }}. - Funciones de cadena:
.toLowerCase(),.toUpperCase(),.trim(),.substring(),.replace(). Ejemplo:{{ $json.email.toLowerCase() }}. - Funciones de array:
.length,.join(). Ejemplo:{{ $json.etiquetas.join(', ') }}. - Funciones de n8n:
$envpara variables de entorno,$todaypara la fecha actual,$nowpara la fecha y hora actuales. Ejemplo:{{ $today.minus({ days: 7 }).toFormat('yyyy-MM-dd') }}.
Evita construir expresiones excesivamente complejas que realicen múltiples transformaciones. Si una expresión se vuelve difícil de leer o depurar, considera dividir la lógica en nodos separados (como un nodo Code o Set) para mejorar la claridad y el mantenimiento del workflow.
Mapeo de Datos y Renombrado
El mapeo de datos es el proceso de tomar valores de un formato (o nombre de campo) y asignarlos a otro. Esto es común cuando se integra con APIs o sistemas que esperan nombres de campos específicos o una estructura de datos particular. Los nodos 'Set' y 'Code' son ideales para el mapeo, pero las expresiones también son clave dentro de ellos.
Ejemplo de mapeo en un nodo 'Set':
| Campo de Salida (nuevo nombre) | Valor (expresión) |
|---|---|
| cliente_id | {{ $json.id_usuario }} |
| nombre_completo | {{ $json.nombre + ' ' + $json.apellido }} |
| fecha_registro | {{ new Date($json.creado_en).toISOString() }} |
En este ejemplo, estamos renombrando id_usuario a cliente_id, combinando nombre y apellido, y formateando una fecha. Las expresiones permiten esta flexibilidad.
Aplicación Práctica: Construcción de un Mensaje Personalizado
El lunes, toma un workflow existente o crea uno nuevo con un nodo 'Start' que emita un ítem JSON simple, por ejemplo:
[
{
"nombre": "Carlos",
"apellido": "García",
"email": "[email protected]",
"monto_compra": 150.75,
"fecha_compra": "2023-10-26T10:30:00Z"
}
]- Añade un nodo 'Set' y crea un nuevo campo llamado
mensaje_personalizado. - Usa una expresión para construir un mensaje que combine el nombre, el apellido, el monto de la compra formateado y la fecha de compra. Por ejemplo:
{{ 'Estimado ' + $json.nombre + ' ' + $json.apellido + ', su compra de $' + $json.monto_compra.toFixed(2) + ' el ' + new Date($json.fecha_compra).toLocaleDateString('es-MX') + ' ha sido procesada.' }}. - Añade un nodo 'NoOp' (o 'Log') al final para inspeccionar el resultado y verificar que el
mensaje_personalizadose haya generado correctamente con los datos mapeados y formateados. Experimenta con diferentes funciones de cadena y fecha para ver cómo afectan el resultado.
There are no comments for now.