Introduction
Lorsque vous connectez plusieurs services dans n8n, les données brutes provenant d'une API correspondent rarement au format attendu par la suivante. Vous devez remodeler les champs, filtrer les enregistrements non pertinents et acheminer les données vers différentes branches selon des conditions. n8n fournit trois nœuds principaux pour cela : Set (pour le mapping simple de champs), Function (pour une logique JavaScript personnalisée) et IF (pour le routage conditionnel). Maîtriser ces nœuds transforme un workflow linéaire en une automatisation intelligente et multi-chemins.
Remodeler les données avec le nœud Set
Le nœud Set vous permet de créer de nouveaux champs ou de renommer ceux existants sans écrire de code. C'est l'outil de prédilection pour les transformations simples comme extraire une propriété imbriquée, combiner des champs ou ajouter des valeurs statiques.
Supposons qu'un webhook délivre ce payload :
Vous voulez l'envoyer vers un CRM qui attend `full_name` et `amount`. Ajoutez un nœud Set après le webhook, configurez deux champs : `full_name` avec l'expression `{{json.user.firstName}} {{json.user.lastName}}`, et `amount` avec `{{$json.orderTotal}}`. La sortie devient :
Le nœud Set prend en charge les expressions utilisant les doubles accolades. Vous pouvez référencer `node['NodeName'].json` pour la sortie d'un autre nœud, et des fonctions intégrées comme `today`. Pour les opérations arithmétiques ou sur chaînes de caractères, écrivez du JavaScript classique entre les accolades : `{{$json.price * 1.1}}` ajoute une marge de 10%.

Logique personnalisée avec le nœud Function
Lorsque les expressions du nœud Set deviennent trop complexes, passez au nœud Function. Il exécute du JavaScript arbitraire et vous donne le contrôle total sur le tableau d'entrée. Le nœud reçoit `items` (un tableau d'objets, chacun avec une propriété `json`) et doit retourner un tableau dans la même structure.
Exemple : filtrer les commandes inférieures à 100 $ et ajouter un niveau de remise :
Cela modifie le tableau items en place. Pour des transformations complexes, vous pouvez mapper sur les items et retourner un nouveau tableau :
Le nœud Function a accès à la bibliothèque standard Node.js et à quelques helpers comme `$input.all()` pour obtenir tous les items entrants. Évitez les opérations asynchrones sauf si vous comprenez la gestion des promises ; pour les appels API à l'intérieur des fonctions, utilisez plutôt le nœud HTTP Request et chaînez-les.
Routage conditionnel avec le nœud IF
Le nœud IF divise votre workflow en deux branches : true et false. Il évalue une ou plusieurs conditions sur chaque item et envoie les items correspondants vers le chemin correspondant.
Ajoutez un nœud IF après votre source de données. Définissez le type de condition sur `Number` pour comparer des montants, `String` pour la correspondance de texte, `Boolean` pour des flags. Vous pouvez combiner plusieurs conditions avec une logique AND/OR.
Exemple de workflow : un webhook Typeform envoie des réponses à un sondage. Utilisez le nœud IF avec la condition `{{$json.score}} > 8`. Connectez la sortie true à un nœud Slack qui publie les retours positifs dans un canal. Connectez la sortie false à un nœud Google Sheets qui consigne les problèmes pour examen.
Le nœud IF ne modifie pas les données ; il se contente d'acheminer. Si vous devez transformer avant d'acheminer, placez un nœud Set ou Function avant le nœud IF. Si les deux branches ont besoin de la même action de suivi, fusionnez-les à l'aide d'un nœud Merge (choisissez le mode « Append » pour combiner les sorties).
Combiner les nœuds dans des workflows multi-services
Les workflows réels enchaînent ces nœuds. Pattern : Webhook → Function (nettoyer les données) → IF (router par type) → Set (formater pour API A) → HTTP Request (envoyer à API A), et la branche false va vers Set (formater pour API B) → HTTP Request (envoyer à API B).
Erreur fréquente : oublier que chaque nœud traite les items indépendamment. Si un nœud Function filtre des items, les nœuds en aval ne voient que les items restants. Si vous avez besoin des données originales plus tard, stockez-les dans une variable à l'intérieur du nœud Function ou utilisez un nœud Set tôt dans le flux pour copier les champs dont vous aurez besoin.
Autre piège : des expressions complexes dans le nœud Set qui échouent silencieusement. Testez toujours avec Execute Workflow et inspectez la sortie de chaque nœud. Si une expression retourne undefined, le champ est omis de la sortie. Utilisez `{{$json.field || 'default'}}` pour fournir des valeurs de secours.
Résumé
Le nœud Set gère le mapping simple de champs et les expressions. Le nœud Function offre un contrôle JavaScript complet pour le filtrage, l'agrégation et les transformations complexes. Le nœud IF achemine les données vers différents chemins selon des conditions. Combinez-les pour construire des workflows qui s'adaptent intelligemment aux données entrantes. Validez toujours les transformations en exécutant le workflow avec des données d'exemple réelles et en vérifiant les sorties intermédiaires avant de connecter des services en production.
Point de contrôle de la leçon
Révisez la leçon et recevez des conseils sur votre travail.