Cuándo usar el iterador
| Escenario | Ejemplo |
|---|---|
| Procesar resultados de búsqueda | Enviar un correo electrónico a cada persona encontrada |
| Gestionar arrays de webhooks | Crear registros para cada elemento en orden |
| Actualizaciones masivas | Actualizar varios registros con valores calculados |
| Notificaciones | Alertar a varias personas sobre un evento |
Comprender el iterador
El iterador espera un array como entrada. Luego:- Toma el primer elemento del array
- Ejecuta todas las acciones dentro del iterador con ese elemento
- Pasa al siguiente elemento
- Repite hasta que se procesen todos los elementos
Configuración básica
Ejemplo: enviar un correo electrónico a todos en los resultados de búsqueda
Objetivo: Encontrar todos los contactos de una empresa específica y enviar a cada uno un correo electrónico personalizado.Paso 1: Buscar registros
- Añade la acción Search Records
- Objeto: People
- Filtro: Company es igual a “Acme Inc”
- Esto devuelve un array de personas
Paso 2: Comprobar que existan resultados
- Añade la acción Filter
- Condición:
{{searchRecords.length}}es mayor que 0 - Esto evita errores del iterador con resultados vacíos
Paso 3: Añadir un iterador
- Añade la acción Iterator
- Entrada del array: selecciona
{{searchRecords}} - Esto crea un bucle
Paso 4: Añadir acciones dentro del iterador
Las acciones colocadas después del iterador se ejecutan para cada elemento:- Añade la acción Send Email (dentro del iterador)
- Para:
{{iterator.currentItem.email}} - Asunto: Hola
{{iterator.currentItem.firstName}}! - Cuerpo: Mensaje personalizado utilizando los campos del elemento actual
Resultado
Si Search Records devuelve 5 personas, el iterador:- Envía un correo electrónico a la persona 1
- Envía un correo electrónico a la persona 2
- … continúa con las 5
Acceder a los datos del elemento actual
Dentro del iterador, usa{{iterator.currentItem}} para acceder al registro actual:
| Variable | Descripción |
|---|---|
{{iterator.currentItem}} | Todo el objeto de registro actual |
{{iterator.currentItem.id}} | ID de registro |
{{iterator.currentItem.email}} | Campo de correo electrónico |
{{iterator.currentItem.company.name}} | Nombre de la empresa relacionada |
{{iterator.index}} | Posición actual en el array (comenzando en 0) |
Patrones comunes
Actualizar varios registros
Objetivo: Marcar todas las tareas atrasadas como “Late”Crear registros desde un array
Objetivo: El webhook recibe un pedido con varios artículos, crear un registro para cada unoProcesamiento condicional dentro del bucle
Objetivo: Enviar correo electrónico solo a los contactos con correos válidosSolución de Problemas
”El iterador espera un array”
Causa: Pasaste un único registro en lugar de un array. Solución: Asegúrate de pasar el resultado de Search Records o un campo de tipo array, no un único registro.El iterador no se ejecuta
Causa: El array está vacío. Solución: Añade un Filter antes del iterador para comprobar la longitud del array:Las acciones se ejecutan demasiadas veces
Causa: Search Records devolvió más registros de los esperados. Solución:- Añade filtros más específicos a Search Records
- Establece un límite en Search Records (máx. 200)
- Añade un Filter dentro del iterador para condiciones adicionales
Consideraciones de rendimiento
- Uso de créditos: Cada iteración consume créditos por sus acciones
- Tiempo: Los arrays grandes tardan más en procesarse
- Límites: Considera procesar por lotes las operaciones muy grandes
- Límites de velocidad: Las llamadas a API externas pueden alcanzar límites de velocidad con muchas iteraciones
Mejores prácticas
- Comprueba siempre la longitud del array antes del iterador para evitar errores
- Añade filtros dentro de los bucles cuando no sea necesario procesar todos los elementos
- Renombra tu paso del iterador para describir qué está recorriendo
- Prueba con arrays pequeños antes de procesar conjuntos de datos grandes
- Supervisa las ejecuciones de flujos de trabajo para asegurarte de que las iteraciones se completen como se espera