Quando utilizzare Iterator
| Scenario | Esempio |
|---|---|
| Elaborare i risultati della ricerca | Invia un’email a ciascuna persona trovata |
| Gestire array di webhook | Crea record per ciascun elemento nell’ordine |
| Aggiornamenti massivi | Aggiorna più record con valori calcolati |
| Notifiche | Avvisa più persone riguardo a un evento |
Comprendere Iterator
Iterator si aspetta un array come input. Quindi:- Prende il primo elemento dall’array
- Esegue tutte le azioni all’interno di Iterator con quell’elemento
- Passa all’elemento successivo
- Ripete finché tutti gli elementi non sono stati elaborati
Selezionare l’array su cui iterare
La maggior parte delle origini di array (Search Records, un campo array di un webhook, un trigger manuale Bulk) può essere selezionata direttamente nel selettore di variabili. Quando uno step Code o Logic Function restituisce un array di primo livello, il relativo output viene visualizzato nel selettore di variabili come voci indicizzate (0, 1, 2, …). Per iterare sull’intero array, seleziona l’opzione Whole list per quello step — l’Iterator deduce quindi automaticamente la struttura di ciascun elemento dall’elenco.
Configurazione di base
Esempio: inviare un’email a tutti nei risultati della ricerca
Obiettivo: Trovare tutti i contatti in un’azienda specifica e inviare a ciascuno un’email personalizzata.Passaggio 1: Cerca i record
- Aggiungi un’azione Search Records
- Oggetto: Persone
- Filtro: Azienda uguale a “Acme Inc”
- Questo restituisce un array di persone
Passaggio 2: Verifica che i risultati esistano
- Aggiungi l’azione Filter
- Condizione:
{{searchRecords.length}}è maggiore di 0 - Questo evita errori di Iterator su risultati vuoti
Passaggio 3: Aggiungi un Iterator
- Aggiungi un’azione Iterator
- Input dell’array: Seleziona
{{searchRecords}} - Questo crea un ciclo
Passaggio 4: Aggiungi azioni all’interno di Iterator
Le azioni posizionate sotto Iterator vengono eseguite per ciascun elemento:- Aggiungi un’azione Send Email (all’interno di Iterator)
- A:
{{iterator.currentItem.email}} - Oggetto: Ciao
{{iterator.currentItem.firstName}}! - Corpo: Messaggio personalizzato utilizzando i campi dell’elemento corrente
Risultato
Se Search Records restituisce 5 persone, Iterator:- Invia un’email alla persona 1
- Invia un’email alla persona 2
- … continua per tutte e cinque
Accedere ai dati dell’elemento corrente
All’interno di Iterator, usa{{iterator.currentItem}} per accedere al record corrente:
| Variabile | Descrizione |
|---|---|
{{iterator.currentItem}} | L’intero oggetto del record corrente |
{{iterator.currentItem.id}} | ID del record |
{{iterator.currentItem.email}} | Campo email |
{{iterator.currentItem.company.name}} | Nome dell’azienda correlata |
{{iterator.index}} | Posizione corrente nell’array (indice a partire da 0) |
{{iterator.currentItem}}). Selezionare l’intero elemento è utile quando vuoi passare un record completo direttamente a uno step a valle invece di ricostruirlo campo per campo.
Modelli comuni
Aggiornare più record
Obiettivo: Contrassegnare tutte le attività in ritardo come “Late”Creare record da un array
Obiettivo: Il webhook riceve un ordine con più elementi e crea un record per ciascunoElaborazione condizionale all’interno del ciclo
Obiettivo: Inviare email solo ai contatti con indirizzi email validiRisoluzione dei problemi
”Iterator expects an array”
Causa: Hai passato un singolo record invece di un array. Soluzione: Assicurati di passare il risultato di Search Records o un campo di tipo array, non un singolo record.Iterator non viene eseguito
Causa: L’array è vuoto. Soluzione: Aggiungi un’azione Filter prima di Iterator per verificare la lunghezza dell’array:Le azioni vengono eseguite troppe volte
Causa: Search Records ha restituito più record del previsto. Soluzione:- Aggiungi filtri più specifici a Search Records
- Imposta un limite su Search Records (massimo 200)
- Aggiungi Filter all’interno di Iterator per condizioni aggiuntive
Considerazioni sulle prestazioni
- Utilizzo dei crediti: ogni iterazione consuma crediti per le sue azioni
- Tempo: gli array di grandi dimensioni richiedono più tempo per essere elaborati
- Limiti: prendi in considerazione l’esecuzione in batch di operazioni molto grandi
- Limiti di frequenza: le chiamate API esterne potrebbero raggiungere i limiti di frequenza con molte iterazioni
Migliori Pratiche
- Controlla sempre la lunghezza dell’array prima di Iterator per evitare errori
- Aggiungi filtri all’interno dei cicli quando non è necessario elaborare tutti gli elementi
- Rinomina il passaggio di Iterator per descrivere ciò su cui sta scorrendo
- Esegui test con array piccoli prima di elaborare set di dati di grandi dimensioni
- Monitora le esecuzioni dei flussi di lavoro per assicurarti che le iterazioni si completino come previsto