Guide · Make.com · Bundles et arrays

Iterator ou aggregator dans Make.com : lequel utiliser et quand (avec exemples)

L'itérateur et l'agrégateur sont deux opposés, et les confondre est à l'origine de nombreuses questions du type « pourquoi ai-je reçu 40 e-mails ? » ou « pourquoi seule la dernière ligne est-elle enregistrée ? ». Ce guide explique ce que chacun fait de vos données, puis construit un scénario d'exemple qui utilise les deux.

Par Flowpaja · Publié le

Ce guide existe aussi en : English · Deutsch · Español · Français

Une commande avec un array items, un itérateur qui produit deux bundles ajoutant chacun une ligne dans Google Sheets, et un agrégateur qui les fusionne en un seul bundle pour que Gmail n'envoie qu'un e-mail
L'itérateur découpe l'array en un bundle par élément ; l'agrégateur les fusionne à nouveau, pour que l'e-mail ne parte qu'une fois.
Transparence : tout ce que décrit ce guide fonctionne avec Make.com seul et les applications qu'il connecte. À la fin, nous mentionnons nos propres modèles Make et notre service de correction de scénarios sur Fiverr. Les noms de modules, réglages et limites ont été vérifiés en octobre 2026 avec Make's aggregator docs and Tools docs (en anglais). Les menus et les limites évoluent ; vérifiez-les si quelque chose diffère.

Ce dont vous avez besoin

  • Un compte Make.com
  • Des données qui contiennent une liste, par exemple une commande avec plusieurs lignes d'articles, un ensemble de lignes Google Sheets ou les pièces jointes d'un e-mail
  • Des connexions Google Sheets et Gmail si vous voulez suivre l'exemple

Le principe en un paragraphe

Make fait circuler les données entre les modules sous forme de bundles. La plupart des modules reçoivent un bundle et en renvoient un. Un itérateur reçoit un bundle contenant un array et transforme chaque élément en un bundle distinct : un en entrée, plusieurs en sortie. Un agrégateur fait l'inverse : il reçoit plusieurs bundles et les fusionne en un seul : plusieurs en entrée, un en sortie. Tout ce qui se trouve entre les deux s'exécute une fois par élément ; la position de ces modules détermine donc combien de fois un module s'exécute, et combien de crédits vous consommez.

Étape par étape : construire un scénario qui utilise les deux

L'exemple : une commande arrive avec plusieurs lignes d'articles. Vous voulez une ligne dans Google Sheets par article, puis un seul e-mail au client avec le total et la liste de ce qu'il a commandé.

1. Récupérez des données qui contiennent un array

Commencez par un déclencheur qui fournit une commande, comme Webhooks – Custom webhook, ou par un HTTP – Make a request qui renvoie du JSON. Voici à quoi ressemble un exemple de payload :

{"order_id": "A-1001", "email": "[email protected]",
 "items": [{"name": "Desk lamp", "qty": 2, "price": 19.5},
           {"name": "Cable", "qty": 3, "price": 4}]}

Après un Run once, Make affiche items comme un array dans la sortie.

2. Ajoutez Flow Control – Iterator

Dans le champ Array, mappez items. Lancez Run once et regardez la sortie : vous voyez maintenant un bundle par article, chacun avec name, qty et price. Le compteur dans la bulle du module indique deux bundles. Tout ce que vous ajoutez à partir de là s'exécutera deux fois pour cette commande.

3. Effectuez une action par élément

Ajoutez Google Sheets – Add a Row. Mappez Order ID depuis le déclencheur (toujours disponible, puisqu'il se trouve plus tôt dans le scénario), ainsi que Name, Qty et Price depuis l'itérateur. Deux lignes sont ajoutées.

4. Fermez la boucle avec un agrégateur

Vous avez maintenant à nouveau besoin d'un résultat unique. Ajoutez Tools – Numeric aggregator. Définissez l'itérateur comme Source module. Pour Function, choisissez Sum, et pour Value, utilisez :

{{2.qty * 2.price}}

L'agrégateur attend tous les bundles de sa source, puis émet un bundle avec le total. Utilisez Tools – Text aggregator de la même façon pour la liste des articles. Source module : l'itérateur. Text : {{2.qty}} x {{2.name}}, avec un saut de ligne comme séparateur de lignes.

5. Utilisez le résultat agrégé

Après l'agrégateur, ajoutez Gmail – Send an email. To est {{1.email}}, issu du déclencheur. Dans Body contents, vous pouvez utiliser le résultat de l'agrégateur, par exemple « Votre total : {{4.result}} ». Comme l'agrégateur a produit un seul bundle, Gmail s'exécute une fois, et non deux.

6. Sachez quand vous n'avez pas du tout besoin d'itérateur

Make propose des fonctions qui travaillent directement sur les arrays. Si vous avez seulement besoin du nombre d'éléments : {{length(1.items)}}. Pour réunir les noms sur une ligne : {{join(map(1.items; "name"); ", ")}}. Pour additionner un champ : {{sum(map(1.items; "price"))}} (cela additionne les prix tels quels, et non la quantité multipliée par le prix). Ces fonctions s'exécutent dans un module que vous avez déjà, sans boucle et sans crédits supplémentaires. Utilisez un itérateur quand chaque élément nécessite sa propre action de module, comme sa propre ligne, son propre envoi de fichier ou son propre message Slack.

Mémo : quel outil choisir ?

Vous voulez…Utilisez
Effectuer une action une fois par élément d'une listeIterator
Transformer plusieurs bundles en une seule listeArray aggregator
Construire un seul bloc de texte, comme le corps d'un e-mailText aggregator
Additionner ou compter des valeursNumeric aggregator
Simplement lire ou remodeler un array à un seul endroitmap(), join(), sum() et length()

L'Iterator et l'Array aggregator se trouvent dans Flow Control ; le Text aggregator et le Numeric aggregator, dans Tools.

Erreurs fréquentes et solutions

Vous recevez un e-mail par élément au lieu d'un seul au total. Le module Gmail se trouve dans la boucle : entre l'itérateur et l'agrégateur, ou après l'itérateur sans aucun agrégateur. Ajoutez l'agrégateur et placez Gmail après lui.

Seul le dernier élément est enregistré, ou l'agrégateur ne renvoie qu'une seule valeur. En général, le Source module est mal réglé, ou l'agrégation est faite par un module Set variable qui s'écrase lui-même à chaque passage. Vérifiez que le Source module de l'agrégateur est bien l'itérateur ou la recherche qui produit les bundles.

L'itérateur ne renvoie rien ou indique qu'il attendait un array. Le champ que vous avez mappé n'est pas un array : c'est du texte, un objet unique ou une valeur vide. Vérifiez la sortie du module précédent. Si vous avez un texte séparé par des virgules, découpez-le d'abord (par exemple avec la fonction split()) et itérez sur le résultat.

Le scénario continue alors que la recherche n'a rien trouvé. C'est normal quand un agrégateur suit la recherche : par défaut, il renvoie un bundle même si aucun bundle ne lui parvient, ce qui est pratique pour gérer les cas « introuvable ». Pour arrêter le scénario à la place, activez Stop processing after an empty aggregation dans les paramètres avancés de l'agrégateur, ou ajoutez un filtre après lui, par exemple lorsque le texte agrégé est vide.

Vous ne voyez plus les données des éléments après l'agrégateur. Après l'agrégation, vous disposez du résultat agrégé et de tout ce qui provient des modules situés avant la boucle. Les valeurs propres à chaque élément dans la boucle ont disparu, sauf si vous les avez agrégées dans un array.

La consommation de crédits est bien plus élevée que prévu. Chaque module placé après un itérateur s'exécute une fois par élément. Une liste de 100 lignes qui traverse quatre modules consomme beaucoup plus de crédits que le même travail réalisé avec map() dans un seul module. L'onglet History affiche les chiffres réels de chaque exécution.

Questions fréquentes

Puis-je placer un itérateur dans un autre itérateur ?
Oui, si chaque élément contient son propre array. Chaque boucle que vous voulez refusionner nécessite son propre agrégateur, et la consommation de crédits se multiplie : surveillez-la.
À quoi sert l'Array aggregator ?
Il rassemble des bundles dans un array que vous pouvez transmettre, par exemple à une requête HTTP qui attend une liste JSON, ou pour compter des résultats avec length().
Lequel vient en premier, l'itérateur ou l'agrégateur ?
En général, l'itérateur ouvre une boucle et l'agrégateur la ferme. Mais un agrégateur peut aussi suivre un module de recherche sans aucun itérateur, car la recherche renvoie déjà plusieurs bundles.
L'agrégateur doit-il se trouver juste après l'itérateur ?
Non. Les modules placés entre les deux s'exécutent une fois par élément. C'est le réglage Source module de l'agrégateur qui les relie.

Besoin d'un regard extérieur sur vos boucles ?

Si un scénario envoie un e-mail par élément ou consomme bien plus de crédits que prévu, envoyez le blueprint exporté et une description du problème à notre service de correction de scénarios Make sur Fiverr (en anglais), sans partager vos identifiants. Nos modèles Make.com (en anglais) couvrent les relances de factures, le suivi des devis et les leads issus de formulaires. Vous gérez une boutique Shopify ? Notre service Fiverr pour envoyer les commandes Shopify vers Google Sheets et Slack (en anglais) met en place ce type de flux de commandes pour vous, à partir de 80 $ US.

Votre propre scénario rencontre une erreur ? Notre service de correction et débogage de scénarios Make sur Fiverr (en anglais) commence à 25 $ US. Envoyez le blueprint exporté et une description de l'erreur, sans identifiants.

← Tous les guides · Tous les modèles (en anglais)

Make, Google, Gmail, Google Sheets et Google Drive sont des marques appartenant à leurs propriétaires respectifs. Flowpaja est indépendante, sans affiliation ni approbation de ces entreprises. Les menus et les limites des forfaits peuvent évoluer ; consultez la documentation actuelle de chaque fournisseur.

Note : cette traduction a été réalisée avec l'aide de l'IA.