En este artículo enseñaremos a utilizar en un ejemplo práctico el nodo "code" de n8n. Para ello nos aprovecharemos de uno de los típicos problemas que nos enseñan a los desarrolladores cuando empezamos a programar: "Convertir de grados Celsius a Fahrenheit" (Casi se puede decir que es el segundo "Hola Mundo" ... jejeje 😄).

A modo de recordatorio pongo los enlaces a los artículos que se irán relacionando :
- "Primeros pasos con n8n (Parte 1)" : Artículo de introducción a la herramienta n8n donde se explicarán más ciertos detalles técnicos de la herramienta y ciertos conceptos necesarios para explotar el máximo su uso.
- "Acelerando los desarrollos con contenedores : n8n": Artículo de soporte que ayudará a desplegar la herramienta en local mediante Docker y que servirá de base para la realización de los siguientes artículos.
- "Ejemplo de n8n: Uso del nodo code": Artículo de soporte que se utilizará para implementar un ejemplo de workflow sin integraciones externas, para explicar el nodo code y para usarlo como base de ejemplo para otros tutoriales. Este artículo 😃.
Este es el índice que se va a utilizar para estructurar este artículo:
- 1. Introducción
- 2. Stack Tecnológico
- 3. Configuración
- 4. Ejemplo de Uso
- 5. Conclusiones
1. Introducción
En este apartado se tratarán los siguiente puntos :
- 1.1. ¿Qué es el nodo "Code"?
- 1.2. Usos del nodo "Code"
- 1.3. Configuración del nodo "Code"
- 1.4. Explicación del problema del conversor de grados Celsius a Fahrenheit
1.1. ¿Qué es el nodo "Code"?
Es el nodo proporcionado por n8n que permite ejecutar código fuente de forma directa dentro de los flujos de trabajo.
Consideraciones
- Facilita programar en JavaScript principalmente y en Python, pero esta segunda opción se encuentra en "beta".
- Facilita el trabajar con datos en tiempo real a diferentes niveles: procesamiento, modificación y transformación.
- No tiene dependencia con nodos específicos u otras integraciones.
- Es "autocontenido" .
- Personalización.
- Resulta de mucha utilidad al proporcionar mucha flexibilidad.
- Puede resultar complicado si no sabes programar.
- Si no sabes programar tampoco es un problema porque puedes hacer uso de plataformas como ChatGPT o Perplexity para buscar como se resuelve un problema.
1.2. Usos del nodo "Code"
Este nodo se suele utilizar cuando se necesita:
- Hacer cálculos o validaciones: Se puede realizar cálculos matemáticos, aplicar lógica condicional sobre los diferentes elementos o realizar verificaciones antes de ejecutar otra acción.
- Transformar datos personalizados: Se pueden realizar cambios sobre los datos recibidos: extraer datos, combinar información, modificar la estructura JSON, etc.
- Optimizar procesos complejos: Se puede reducir el uso de diferentes nodos al agrupar todos en un único elemento.
- Integrar APIs sin utilizar nodos específicos: Se puede utilizar para hacer llamadas a APIs de forma programática.
1.3. Configuración del nodo "Code"
El nodo "Code" facilita su configuración en diferentes aspectos:
Pestaña de Parámetros

En la sección modo se indica cómo se va a ejecutar
- Una vez para todos los items
- Una vez para cada item
En la sección lenguaje se establece el lenguaje de programación
- JavaScript
- Python (Beta)
En la sección de "código" se permite establecer nuestra implementación.
Pestaña de Ajustes

Se podrán establecer otras configuraciones como: control de errores, políticas de re intentos, etc.
1.4. Explicación del problema del conversor de grados Celsius a Fahrenheit
En este apartado vamos a explicar cómo se resuelve el problema de esta conversión que para este caso se resolverá con un cálculo matemático.
Comprender las escalas
Primero de todo se aconseja entender el problema que queremos resolver. Pero si no te quieres aburrir puedes pasar al siguiente punto
Las escalas de Celsius y Fahrenheit empiezan por números diferentes.
- En Celsius, 0 grados es la temperatura de congelación.
- En Fahrenheit, 32 grados es la temperatura equivalente.
Las escalas de Celsius y Fahrenheit se incrementan con ritmos diferentes
- En Celsius, de 0 a 100 grados se considera el rango de pasar de congelación a ebullición.
- En Fahrenheit, de 32 a 212 grados se considera el rango equivalente.
- No son proporcionales.
- Por cada rango de 180 grados en Fahrenheit, hay un rango de solo 100 grados en Celsius.
- Esto puede expresarse como 180/100 y, al simplificarlo, equivale a un coeficiente de 1,8.
Por lo tanto hay que tener en cuenta que tienen un comienzo diferente de 32 grados y un coeficiente de ajuste de 1,8.
La fórmula para convertir de Celsius a Fahrenheit es:
valor_fahrenheit = (valor_celsius * 1,8) +32
Por lo tanto, ya hemos entendido el cálculo matemático, ahora tendremos que ver cómo nos llega la información de entrada y como generamos la información de salida.
Ayuda a no programadores
Podemos aprovechar alguna de plataformas IA o bien la clásica búsqueda en Google para resolver el problema si no tenemos mucha idea de programación 😄.
Ejemplo de prompt utilizado en ChatGPT:
Genera un conversor de grados Celsius a Fahrenheit en Javascript. Incluye solo la parte de código Javascript

Ejemplo de resultado en código
function celsiusToFahrenheit(celsius) {
return (celsius * 9/5) + 32;
}
// Ejemplo de uso
const celsiusValue = 25;
console.log(`${celsiusValue}°C es igual a ${celsiusToFahrenheit(celsiusValue)}°F`);
Con esto ya tenemos una idea del tipo de cálculo que necesitamos hacer.
2. Stack Tecnológico
Este es el stack tecnológico elegido para implementar la funcionalidad "n8n":
- Docker - Tecnología de Contenedores/Containers
- Docker Hub - Repositorio de Docker Público donde se ubican las imágenes oficiales
- n8n - Herramienta de automatización de procesos + Agentes IA
3. Configuración
En este apartado se enseñará como preparar el entorno para la parte práctica.
Esta preparación se puede realizar sobre una instalación específica en un servidor local o bien usando el alojamiento en la nube.
Si quieres saber más sobre como montar la infraestructura de n8n con contenedores Docker mira el artículo "Acelerando los desarrollos con contenedores : n8n"
Para facilitar el ejemplo práctico en este caso haremos uso de la infraestructura mediante contenedores y para ello haremos uso del siguiente fichero de Docker Compose
4. Ejemplo de Uso
Para la realización del ejemplo práctico se aconseja seguir los siguientes pasos:
- 4.1. Arrancar la infraestructura n8n
- 4.2. Crear un workflow de conversión de grados Celsius a Fahrenheit
- 4.3. Probar el workflow
- 4.4. Verificar ejecuciones del workflow
4.1. Arrancar la infraestructura n8n
Haciendo uso de lo indicado en el apartado 3 y en su artículo asociado, arrancaremos la infraestructura para empezar a trabajar.
4.2. Crear un workflow de conversión de grados Celsius a Fahrenheit
Pasos a seguir:
- Paso 1: Crear un workflow nuevo
- Paso 2: Inicializar trigger manual
- Paso 3: Establecer el valor de temperatura en grados Celsius
- Paso 4: Implementar el conversor en código de Celsius a Fahrenheit
- Paso 5: Recuperar el valor de la temperatura en grados Fahrenheit
Paso 1: Crear un workflow nuevo
Para su realización se requiere:
- Pulsar sobre el botón rojo "Create Workflow"

- Acceder al canvas de desarrollo
- Cambiar el nombre por : Conversor Temperatura

- Verificar que se ha cambiado el nombre y el workflow se identifica de esa manera

Paso 2: Inicializar trigger manual
El trigger manual se activará bajo demanda, es decir, que lo tendremos que activar nosotros manualmente.
Su ejecución dará paso a la ejecución del resto del workflow.
Para su realización se requiere:
- Pulsar sobre el icono de "+" del canvas o bien en el botón"+" del menú de la derecha

- Seleccionar el nodo "Trigger manually"

- Verificar que se ha añadido en el canvas
Nota: Este trigger no tiene opciones de configuración propias

Paso 3: Establecer el valor de temperatura en grados Celsius
Se utilizará el nodo "Edit Fields (Set)" que permite establecer variables.
Para su realización se requiere:
- Pulsar sobre el icono de "+" de la salida del trigger manual o bien desde la opción "+" del menú de la derecha
- Si los nodos no aparecen conectados automáticamente entonces será necesario conectarlos manualmente
- Seleccionar el nodo "Edit Fields (Set)" (más conocido por Set)

- Verificar que se ha añadido en el canvas
- Asegurar que esta conectado desde el nodo trigger anterior
- Cambiar el nombre del nodo por : Temperatura Celsius


- Configura el nodo "Set"
- Establecer un campo: tempCelsius
- Establecer como tipo: number
- Establecer como valor: 10
- Establecer un campo: tempCelsius

- Probar el funcionamiento del nodo

Paso 4: Implementar el conversor en código de Celsius a Fahrenheit
Se utilizará el nodo "Code" que permite implementar el código fuente
Para su realización se requiere:
- Pulsar sobre el icono de "+" de la salida del "Temperatura Celsius" o bien desde la opción "+" del menú de la derecha
- Si los nodos no aparecen conectados automáticamente entonces será necesario conectarlos manualmente
- Seleccionar el nodo "Code"


- Cambiar el nombre por: Conversor

- Acceder a la configuración
- Establecer como modo: Ejecutar para todos los items
- Establecer como lenguaje: JavaScript
- Establecer el código:
Para su realización se ha utilizado la referencia del valor de temperatura en Celsius del nodo anterior como valor de entrada, se ha realizado el cálculo matemático que ya se había analizado previamente y se ha decidido plantear usa salida adaptada. Para ello se ha realizado una estructura de datos de salida que contenga a la vez cual ha sido la temperatura Celsius origen y la temperatura Fahrenheit calculada.
Ejemplo de código utilizado en la implementación
// *** Entrada de Datos ***
// Obtener la temperatura en Celsius del nodo anterior
const tempCelsius = $input.first().json.tempCelsius
// *** Implementación ***
// Convertir la temperatura de Celsius a Fahrenheit
const tempFahrenheit = (tempCelsius * 1.8) +32;
// *** Salida de Datos ***
// Crear una estructura de datos tipo JSON
const result = {
tempCelsius: tempCelsius,
tempFahrenheit: tempFahrenheit
}
// Generar resultado
return {json: result}
- Probar el funcionamiento del nodo

Paso 5: Recuperar el valor de la temperatura en grados Fahrenheit
Se utilizará el nodo "Edit Fields (Set)" que permite establecer variables
Para su realización se requiere:
- Pulsar sobre el icono de "+" de la salida del nodo "Conversor" o bien desde la opción "+" del menú de la derecha
- Si los nodos no aparecen conectados automáticamente entonces será necesario conectarlos manualmente
- Seleccionar el nodo "Edit Fields (Set)" (más conocido por Set)

- Cambiar el nombre por : Temperatura Fahrenheit

- Configura el nodo "Set"
- Establecer un campo: tempFahrenheir
- Establecer como tipo: number
- Establecer como valor: {{ $json.tempFahrenheit }}
- Con arrastrar el valor de la entrada vale 😄
- Se mostrará el valor de la ejecución anterior
- Establecer un campo: tempFahrenheir

- Probar el funcionamiento del nodo

4.3. Probar el flujo completo
Pasos a seguir
- Establecer el valor de la temperatura en Celsius dentro del nodo "Temperatura Celsius"

- Ejecutar el nodo trigger manual o bien todo el workflow

- Visualizar el valor de la temperatura en Fahrenheit dentro del nodo "Temperatura Fahrenheit"

Con esto ya habríamos probado que todo se encuentra funcionando
4.4. Verificar ejecuciones del workflow
Cada vez que se ejecuta el workflow se guardan datos de dicha ejecución por lo que se podría acceder a ellos.
Pasos a seguir:
- Acceder al menú principal de n8n

- Acceder a la pestaña "Executions"

- Acceder a la última ejecución

Se puede acceder a que ha pasado en cada nodo, si se accede a cada uno de ellos. Además de poder ver datos de metainformación de la ejecución.
5. Conclusiones
En este artículo se ha podido hacer un ejemplo de workflow usando el nodo "Code" y se ha podido ver que este nodo puede facilitar mucho ciertas automatizaciones a nivel de personalización. Por lo que va a ser una buena arma para añadir funcionalidad a nuestros flujos de trabajo .
Por otro lado, se ha podido ver que en ciertas herramienta tipo "low code" siempre se deja una "ventanita" abierta al tema de poder incluir código fuente. Este caso no iba a ser una diferencia.
Espero que os haya gustado, nos vemos en los siguientes tutoriales.