For Each
For Each
Sección titulada «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.
Cómo funciona
Sección titulada «Cómo funciona»- Evalúa la colección indicada en
items. - Para cada elemento, lo guarda en la variable
itemVariable(y su posición, desde 0, enindexVariablesi la definiste) y ejecuta lasactivities. - 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 DataTable | Una fila (DataRow): lee sus celdas con str(fila["Columna"]). |
| Una lista o un arreglo | El elemento tal cual (texto, número, diccionario…). |
Un Dictionary | Un 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ámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
items | object | — | La colección a recorrer: lista, arreglo, DataTable (sus filas) o Dictionary (sus pares). Ej: correos, tabla. |
itemVariable | string | — | Nombre de la variable donde se guarda el elemento actual en cada vuelta. Ej: item, fila, correo. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
indexVariable | string | — | 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. |
Sub-flujos
Sección titulada «Sub-flujos»activities requerido
Sección titulada «activities requerido»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.
Ejemplo
Sección titulada «Ejemplo»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.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa 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 nada | La colección está vacía. Verifica que la actividad anterior devolvió datos (por ejemplo, registrando rowCount(tabla) con un Log). |