Section 11.3.8 : Make — Modules avancés et routeurs
🎯 Objectif pédagogique
Maîtriser les fonctionnalités avancées de Make : routeurs, itérateurs, agrégateurs, gestion d'erreurs et modules HTTP custom. Vous serez capable de construire des workflows complexes avec plusieurs branches et de la logique conditionnelle.
Au-delà des scénarios simples
Marc a construit ses premiers scénarios linéaires (A → B → C). Maintenant il a besoin de logique : "Si c'est un entretien, notifie Slack ET ajoute au calendrier. Si c'est un refus, archive et mets à jour les stats." C'est le rôle des modules avancés.
Routeur — Embranchements conditionnels
[Google Sheets : Watch Rows]
↓
[🔀 Router]
├── Route 1 : status = "interview"
│ ├── [Google Calendar : Create Event]
│ └── [Slack : Send Message → #interviews]
│
├── Route 2 : status = "offer"
│ ├── [Slack : Send Message → #wins]
│ └── [Gmail : Send Email → template "offer_received"]
│
├── Route 3 : status = "rejected"
│ └── [Google Sheets : Update Row → Archive tab]
│
└── Route 4 : Fallback (toutes les autres)
└── [Logger : Log data]
- →Chaque route a un filtre (condition)
- →Plusieurs routes peuvent s'activer simultanément (non exclusives par défaut)
- →L'option "Fallback route" s'active si aucune autre route ne match
Itérateur — Traiter des listes
Quand un module retourne un tableau (ex: API qui retourne 10 offres), l'itérateur les traite une par une.
[HTTP : GET /api/jobs?q=python]
↓ Retourne un tableau de 10 offres
[🔄 Iterator]
↓ Pour chaque offre
[Google Sheets : Add Row]
→ Titre: item.title
→ Entreprise: item.company
→ Salaire: item.salary
Agrégateur — Combiner des résultats
L'inverse de l'itérateur : combine plusieurs éléments en un seul.
[Google Sheets : Search Rows]
↓ Trouve 15 candidatures "applied"
[🔄 Iterator]
↓ Pour chaque candidature
[Text Aggregator]
→ Combine en un seul texte :
"- Google (Frontend) — 2026-03-01
- Meta (React) — 2026-03-05
- ..."
↓
[Gmail : Send Email]
→ Sujet: "Rapport quotidien : 15 candidatures en attente"
→ Corps: texte agrégé
Module HTTP — Appeler n'importe quelle API
Module: HTTP → Make a request
─────────────────────────────
URL: https://api.open-meteo.com/v1/forecast
Method: GET
Query String:
latitude: 48.86
longitude: 2.35
current_weather: true
Headers:
Accept: application/json
─────────────────────────────
Parse response: ✅ Yes
Output: JSON object
Gestion d'erreurs
[Module principal]
↓
[❌ Error Handler]
├── Ignore → Continue le scénario
├── Resume → Retourner une valeur par défaut
├── Rollback → Annuler toutes les opérations
├── Commit → Valider malgré l'erreur
└── Break → Arrêter et mettre en file d'attente
Ajoutez un error handler en faisant clic-droit sur un module → "Add error handler".
Variables et fonctions Make
# Fonctions de texte
\{\{lower(company)\}\} → "google"
\{\{upper(status)\}\} → "INTERVIEW"
\{\{substring(text; 0; 100)\}\} → Tronquer à 100 caractères
# Fonctions de date
\{\{now\}\} → Date et heure actuelles
\{\{addDays(date; 7)\}\} → Date + 7 jours
\{\{formatDate(date; "DD/MM/YYYY")\}\}
# Conditions dans les champs
\{\{if(salary > 70000; "✅ Bon salaire"; "⚠️ En dessous du marché")\}\}
# Math
\{\{round(salary / 12)\}\} → Salaire mensuel arrondi
Quand passer du no-code au code ?
Make est parfait pour 80% des automatisations. Passez au code Python si :
- →Le traitement de données est complexe (pandas, ML)
- →Vous dépassez les limites du plan (opérations/mois)
- →La logique nécessite des boucles imbriquées complexes
- →Vous avez besoin de tests unitaires La bonne pratique : Make pour l'orchestration, Python (via module HTTP) pour le traitement.
🏋️ Exercice pratique (25 minutes)
Construisez un scénario Make avancé :
- →Trigger : Schedule (tous les jours à 9h)
- →Module HTTP : GET sur une API météo
- →Router :
- →Si température > 20°C → Slack "☀️ Beau temps pour travailler dehors"
- →Si pluie → Slack "🌧️ Restez chez vous, focus deep work"
- →Error handler : Si l'API échoue → email de fallback
Quelle est la différence entre un Itérateur et un Agrégateur dans Make ?
Quand devriez-vous utiliser le module HTTP de Make au lieu d'un connecteur pré-intégré ?