Ir al contenido

For Each

Tipo: foreach  ·  Paquete: Core Activities v1.0.8

Recorre una colección —una lista, un arreglo, un diccionario o las filas de una DataTable— y ejecuta un bloque de actividades una vez por cada elemento. Es el bucle que más vas a usar: “por cada fila del Excel…”, “por cada correo recibido…”, “por cada factura pendiente…”.

En cada vuelta, el elemento actual queda disponible en una variable de iteración que tú nombras y, si la pides, su posición en otra variable.

  1. Evalúa la colección indicada en items.
  2. Para cada elemento, lo guarda en la variable itemVariable (y su posición, desde 0, en indexVariable si la definiste) y ejecuta las activities.
  3. Repite hasta agotar la colección. Con una colección vacía, el cuerpo no se ejecuta y el flujo sigue.

Qué recibe la variable de iteración según items:

items es…Cada elemento es…
Una DataTableUna fila (DataRow): lee sus celdas con str(fila["Columna"]).
Una lista o un arregloEl elemento tal cual (texto, número, diccionario…).
Un DictionaryUn par con .Key y .Value.
Un texto, un número o un valor vacío (null)No se puede recorrer: la actividad falla (ver Errores comunes).

Dentro del bucle puedes usar Break (para salir antes) y Continue (para saltar a la siguiente vuelta). La posición en indexVariable sigue contando aunque una vuelta termine con Continue, así que elemento y posición siempre coinciden. Antes de cada vuelta se revisa si la ejecución se terminó, de modo que Terminar corta el bucle entre un elemento y el siguiente.

ParámetroTipoPor defectoDescripción
itemsobject—La colección a recorrer: lista, arreglo, DataTable (sus filas) o Dictionary (sus pares). Ej: correos, tabla.
itemVariablestring—Nombre de la variable donde se guarda el elemento actual en cada vuelta. Ej: item, fila, correo.
ParámetroTipoPor defectoDescripción
indexVariablestring—Nombre de la variable que recibe la posición del elemento actual, contando desde 0 (0, 1, 2…). Si lo dejas vacío, no se crea ninguna variable de índice.

Las actividades que se ejecutan en cada iteración. Se configuran como un lane en el canvas.

Esta actividad no devuelve ningún valor. Lo que produce son las variables itemVariable e indexVariable, que se actualizan en cada vuelta.

Recorrer las filas de un Excel, omitir las que no tienen correo y decir en qué fila de la hoja está cada una:

For Each items = tablaClientes itemVariable = fila indexVariable = n
└─ activities:
If condition = isEmpty(str(fila["Correo"]))
└─ then:
Log level = warning message = "Fila " + (n + 2) + " sin correo; se omite"
Continue // salta esta fila y pasa a la siguiente
SMTP Send to = str(fila["Correo"]) subject = "Aviso"

Como n empieza en 0 y la fila 1 de la hoja tiene los encabezados, n + 2 es el número de fila que ve una persona en el Excel.

MensajeCausa y solución
'items' no es iterable (…).items no es una colección: es un texto, un número o está vacío (null); entre paréntesis va el tipo recibido. Revisa que la actividad anterior haya devuelto una lista o una tabla; si puede llegar vacía, protege el bucle con un If (items != null).
'itemVariable' es obligatorio.Falta el nombre de la variable de iteración. Escríbelo en el panel de propiedades.
'activities' es obligatorio.El bucle no tiene lane de actividades. Agrega al menos una actividad dentro.
El bucle no hace nadaLa colección está vacía. Verifica que la actividad anterior devolvió datos (por ejemplo, registrando rowCount(tabla) con un Log).
  • For Loop — repetir un número contado de veces (cuando no recorres una colección).
  • While — repetir mientras se cumpla una condición.
  • Break / Continue — controlar el bucle desde dentro.