Saltar al contenido principal

Bucles en n8n

Los bucles son muy útiles cuando necesitas procesar múltiples ítems o repetir una operación varias veces (por ejemplo, enviar un mensaje a cada contacto de una lista). n8n gestiona automáticamente este tipo de operaciones repetitivas, lo que significa que, en la mayoría de los casos, no necesitas construir explícitamente un bucle en tu flujo de trabajo. Sin embargo, existen algunas excepciones.

Uso de bucles en n8n

Los nodos de n8n aceptan cualquier cantidad de ítems como entrada y generan resultados tras procesarlos. Puedes considerar cada ítem como un punto de datos individual o como una fila en la tabla de salida del nodo.

Salida del nodo Customer Datastore

Normalmente, los nodos se ejecutan una vez por cada ítem. Por ejemplo, si deseas enviar el nombre y las notas de cada cliente del nodo Customer Datastore como mensajes individuales a Slack, solo necesitas:

  1. Conectar el nodo de Slack al nodo Customer Datastore.
  2. Configurar los parámetros.
  3. Ejecutar el nodo.

Recibirás cinco mensajes, uno por ítem.

Así es como n8n permite procesar varios ítems en lote sin necesidad de conectar explícitamente los nodos en una estructura de bucle.

Hacer que un nodo se ejecute solo una vez

Crear bucles manualmente

Aunque n8n normalmente itera automáticamente sobre todos los ítems entrantes, en ciertos escenarios específicos debes crear manualmente un bucle para recorrer todos los ítems. Para saber qué nodos no iteran automáticamente sobre todos los ítems de entrada, consulta la sección «Excepciones de nodos».

Bucle hasta que se cumpla una condición

Para crear un bucle en un flujo de trabajo de n8n, conecta la salida de un nodo a la entrada de un nodo anterior. Añade un nodo IF para determinar cuándo detener el bucle.

Aquí tienes un flujo de trabajo de ejemplo que utiliza un nodo IF para implementar un bucle:

Vista del editor del flujo de trabajo de ejemplo

Bucle hasta que se procesen todos los ítems

Si deseas que el bucle continúe hasta que se hayan procesado todos los ítems, utiliza el nodo Loop Over Items. Para procesar los ítems uno por uno, establece el Tamaño del lote (Batch Size) en 1.

También puedes procesar los datos en lotes. Esto resulta útil al procesar grandes volúmenes de datos entrantes o cuando necesitas evitar límites de tasa (rate limits) de una API al procesar los resultados por lotes.

Una vez que todos los ítems entrantes han sido pasados por lotes al siguiente nodo del flujo de trabajo, el nodo Loop Over Items se detiene automáticamente, por lo que no necesitas añadir un nodo IF adicional para detener el bucle.

Excepciones de nodos

Los siguientes nodos y operaciones requieren que diseñes manualmente un bucle en tu flujo de trabajo:

  • CrateDB: las operaciones insert y update solo se ejecutan una vez.
  • Code (modo Ejecutar una vez para todos los ítems): procesa todos los ítems según el fragmento de código proporcionado.
  • Execute Workflow (modo Ejecutar una vez para todos los ítems).
  • HTTP Request: debes implementar manualmente la lógica de paginación. Si la llamada a la API devuelve resultados paginados, debes crear un bucle para obtener los datos página por página.
  • Microsoft SQL: las operaciones insert, update y delete solo se ejecutan una vez.
  • MongoDB: las operaciones insert y update solo se ejecutan una vez.
  • QuestDB: la operación insert solo se ejecuta una vez.
  • Redis:
    • Info (información): esta operación se ejecuta una sola vez, independientemente de cuántos ítems contenga la entrada.
  • RSS Read: se ejecuta una sola vez por la URL solicitada.
  • TimescaleDB: las operaciones insert y update solo se ejecutan una vez.