Comment calculer un champ avec une étape Code ?

Une étape Code exécute une courte fonction JavaScript qui calcule des champs (une date d'effet, un champ réservé aux couples) avant l'envoi vers votre webhook, OGGO Data ou Nova.

Mis à jour le Ouvrir cet écran
Où ça se passeIntégrationsAjouter une étapeCode

Ce que fait cette étape

Certains champs attendus par votre outil n'existent nulle part chez nous : ils se calculent. Une date d'effet au premier jour du mois suivant dépend du jour de l'envoi. Le nom du conjoint ne doit partir que si le prospect vit en couple. Le nœud Transformer les données réécrit des valeurs par listes ; l'étape Code couvre les cas qu'une liste ne sait pas traiter.

Vous écrivez une fonction qui reçoit les champs de la mise en relation et rend des champs nommés. Ces champs deviennent des marqueurs que le webhook, OGGO Data et Nova placés en dessous peuvent citer. La fonction calcule seulement : c'est la destination qui envoie, avec ses propres réglages.

Ce qu'il faut avoir sous la main

  • Un flux déjà créé, avec au moins une destination webhook, OGGO Data ou Nova en dessous de l'étape.
  • Le droit de gérer les intégrations sur votre compte, voir Que peut faire chaque rôle ?.
  • Des notions de JavaScript. Une fonction de dix lignes suffit dans la plupart des cas, et l'exemple proposé couvre les deux besoins les plus courants.

Ce que reçoit et rend la fonction

La fonction reçoit un objet data et rend un objet dont chaque clé est un nom de champ :

``js (data) => { const now = new Date(); const start = new Date(now.getFullYear(), now.getMonth() + 1, 1); const dd = String(start.getDate()).padStart(2, "0"); const mm = String(start.getMonth() + 1).padStart(2, "0"); return { date_effet1: ${dd}/${mm}/${start.getFullYear()}, ...(data.subscriberType === "couple" ? { nom_conj: data.lastName } : {}), }; } ``

  • Ce qu'elle reçoit : les mêmes champs que le nœud Transformer voit à cet endroit du flux, règles des étapes du dessus comprises. Les valeurs arrivent en texte.
  • Ce qu'elle rend : des valeurs texte, nombre, vrai/faux ou null. Chacune part sous forme de texte, 2 000 caractères au plus.
  • Une clé absente, ou valant undefined, signifie « pas de champ ». C'est ce qui rend un champ conditionnel : dans l'exemple, nom_conj n'existe que pour un couple.
  • Les noms : lettres, chiffres, _ et -, en commençant par une lettre ou _, 64 caractères au plus. phoneNumber est réservé : il protège le numéro utilisé pour joindre le prospect.

Les limites

La fonction s'exécute dans un espace isolé :

  • pas de réseau : ni fetch, ni appel à un autre service ;
  • pas de require, pas de module, pas d'accès aux variables d'environnement ni à aucun secret ;
  • 100 ms de calcul et 32 Mo de mémoire au plus ;
  • 20 Ko de source et 100 champs en sortie au plus ;
  • pas d'async ni de promesse.

new Date() fonctionne, à l'heure de nos serveurs.

Le chemin, depuis le tableau de bord

1. Ouvrez l'écran Intégration

Dans le menu de gauche, cliquez sur Intégrations, puis ouvrez le flux à régler.

2. Ajoutez l'étape « Code »

Cliquez sur le + de la toile, à l'endroit voulu. Sous Logique, choisissez Code. L'étape arrive avec l'exemple ci-dessus déjà écrit et ses deux sorties déjà déclarées.

3. Écrivez la fonction

Sous la zone de code, la liste Champs disponibles reprend les champs de ce flux. Un clic sur un champ l'insère dans la fonction, à l'endroit du curseur. La touche Tab indente ; pour quitter la zone au clavier, appuyez sur Échap puis sur Tab.

4. Déclarez les sorties

Seuls les champs listés sous Sorties déclarées passent aux destinations du dessous. Un champ rendu par la fonction mais absent de cette liste n'est pas envoyé, et l'écran le signale.

Déclarez aussi les champs qui n'apparaissent que parfois, comme nom_conj : même si votre essai porte sur un prospect seul, le champ doit être déclaré pour partir avec les couples, et pour que {{nom_conj}} soit accepté à l'activation.

5. Cliquez sur « Essayer »

La fonction s'exécute sur la dernière mise en relation reçue dans le périmètre de ce flux, ou sur un exemple fictif si vous n'avez encore rien reçu. Rien n'est envoyé. L'écran montre les champs rendus, ce que la fonction a reçu, et les champs produits sans être déclarés, avec un bouton Ajouter aux sorties.

6. Citez les champs dans la destination

Dans le webhook, OGGO Data ou Nova placés en dessous, les sorties déclarées apparaissent parmi les champs proposés. Dans un webhook, citez-les comme n'importe quel champ : {{date_effet1}}.

Les champs conditionnels dans un webhook

Un marqueur sans valeur part vide par défaut : nom_conj= pour un prospect seul. La case Omettre les paramètres dont le marqueur est absent, dans le réglage du webhook, supprime alors le paramètre au lieu de l'envoyer vide. Elle est cochée d'office sur un webhook que vous ajoutez ; un webhook déjà enregistré garde son comportement tant que vous ne la cochez pas.

Quand la fonction échoue

L'essai et l'historique disent ce qui s'est passé, par une phrase suivie du message de la fonction :

  • erreur de syntaxe : la source ne se lit pas. Le message cite souvent la ligne ; les numéros de ligne sont affichés à gauche de la zone de code ;
  • plus de 100 ms de calcul : le plus souvent une boucle sans fin ;
  • plus de 32 Mo de mémoire ;
  • résultat refusé : la fonction n'a pas rendu un objet, ou un nom, une valeur ou le nombre de champs dépasse les limites ;
  • erreur pendant l'exécution : la fonction a levé une erreur, par exemple en lisant une propriété d'une valeur absente.

Une erreur de la fonction (syntaxe, résultat refusé, erreur levée) n'est pas réessayée : l'envoi est marqué en échec dans l'historique, et les destinations du dessous ne partent pas pour cette mise en relation. Corrigez la fonction. Un dépassement de temps ou de mémoire est réessayé automatiquement quelques fois. Sous l'erreur, l'essai vous indique quoi faire : « réessayez dans un instant » ou « corrigez la fonction ».

Ce qui bloque l'activation

Un flux avec une étape Code peut toujours être enregistré. Il ne s'active pas si :

  • l'étape est vide : « L'étape Code est vide : écrivez la fonction à exécuter. » ;
  • la fonction échoue sur l'exemple d'essai : ouvrez l'étape et cliquez sur Essayer pour lire l'erreur.

À lire ensuite

Il vous manque une réponse ?

Le support répond en français, avec accès à votre compte et à vos livraisons. Passer par lui est plus rapide que chercher plus longtemps.

Contacter le support