Livre de recettes d’expression pour les flux cloud

Cet article explique 30 modèles d’expression prêts à l’emploi pour les scénarios courants dans Power Automate flux cloud. Vous pouvez copier, adapter et utiliser ces modèles dans vos flux.

Note

Ces expressions fonctionnent dans tous les niveaux de licence de flux cloud Power Automate. Recherchez la référence de fonction complète dans les fonctions d’expression de flux de travail.

Opérations de texte

1. Convertir en majuscules ou minuscules

Scénario : normaliser l’entrée utilisateur avant la comparaison ou le stockage.

Expression : toUpper(variables('input')) ou toLower(variables('input'))

Exemple : toLower('John.Smith@Contoso.COM') retourne john.smith@contoso.com

Important

toUpper() respecte la casse lorsqu’elle est utilisée dans les comparaisons. Si vous utilisez toUpper(A) = B, veillez à l’appliquer aux deux côtés. toUpper(A) = B échoue si B est mixte.

2. Extraire la sous-chaîne (gauche, droite, milieu)

Scénario : extraire une partie spécifique d’une valeur de texte. Obtenez les premiers caractères N, le dernier N ou une plage à partir du milieu.

Expression :

  • Gauche: substring(variables('text'), 0, 5)
  • Correct : substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Milieu: substring(variables('text'), 3, 4)

Exemple : substring('Invoice-2026-0042', 8, 4) retourne 2026

Conseil / Astuce

Le deuxième paramètre est l’index de début (basé sur 0), le troisième est la longueur, et non l’index de fin. substring('ABCDE', 1, 3) renvoie BCD, et non BC.

3. Remplacer le texte

Scénario : Nettoyer ou transformer des valeurs de texte. Supprimez les caractères, délimiteurs d’échange, corrigez la mise en forme.

Expression : replace(variables('input'), 'old', 'new')

Exemple : replace('2026/03/18', '/', '-') retourne 2026-03-18

Note

replace() respecte la casse. replace('Hello', 'hello', 'Hi') retourne Hello inchangé. Convertissez d’abord en cas de cas courant si nécessaire.

4. Fractionner la chaîne en tableau

Scénario : décomposez une valeur délimitée (e-mails séparés par des points-virgules) en éléments individuels pour effectuer une boucle.

Expression : split(variables('input'), ',')

Exemple : split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') retourne ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]

Conseil / Astuce

Espaces après la conservation du délimiteur. split('a, b, c', ',') retourne ["a"," b"," c"] avec des espaces de début. Utiliser trim() sur chaque élément d’une action Sélectionner par la suite.

5. Concaténer avec des sauts de ligne (pour les e-mails)

Scénario : Créez un corps de message multiligne pour les notifications par e-mail ou Teams.

Expression : concat('Line 1', decodeUriComponent('%0A'), 'Line 2')

Example : utilisez decodeUriComponent('%0A') pour une ligne ou decodeUriComponent('%0D%0A') pour les sauts de ligne de style Windows.

Important

L’utilisation \n directe dans les expressions ne produit pas de saut de ligne. Il génère les caractères \nlittérals . Utilisez toujours l’approche decodeUriComponent ou utilisez <br> si la sortie est HTML.

6. Vérifiez si la chaîne contient du texte

Scénario : acheminer un flux selon qu’une ligne d’objet, un corps de courrier ou un champ contient un mot clé.

Expression : contains(toLower(triggerBody()?['subject']), 'urgent')

Exemple : contains('Project Alpha Review', 'Alpha') retourne true

Note

contains() respecte la casse. Enveloppez toujours la botte de foin et l’aiguille pour toLower() la correspondance sans respect de la casse : contains(toLower(value), toLower(search)).

Date et heure

7. Obtenir la date/heure actuelles dans un format spécifique

Scénario : horodatage d’un nom de fichier, d’une entrée de journal ou d’un e-mail avec la date et l’heure actuelles.

Expression : formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')

Exemple : renvoie 2026-03-18 14:30 (UTC). Utiliser convertTimeZone() pour l’heure locale.

Conseil / Astuce

utcNow() est toujours UTC. Pour l’heure locale, chaînez avec convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Ajouter ou soustraire des jours d’une date

Scénario : calculez une date d’échéance, une expiration ou une date de rappel par rapport à aujourd’hui.

Expression : addDays(utcNow(), 7) ou addDays(utcNow(), -30)

Exemple : Si aujourd’hui est 2026-03-18, addDays(utcNow(), 7) retourne 2026-03-25T...Z

Note

addDays() accepte également des valeurs fractionnaires, mais addHours() ou addMinutes() sont plus claires pour les décalages de sous-jour. N’utilisez addDays(utcNow(), 0.5) pas quand vous voulez dire addHours(utcNow(), 12).

9. Convertir la chaîne en date (analyse)

Scénario : un champ de texte contient une date comme 03/18/2026 et vous devez l’utiliser dans les fonctions de date.

Expression : parseDateTime(variables('dateString'), 'en-US')

Exemple : parseDateTime('03/18/2026', 'en-US') retourne une valeur datetime appropriée.

Important

Sans le paramètre de paramètres régionaux, l’analyse dépend des paramètres régionaux du flux et peut permuter le mois/le jour. Spécifiez toujours les paramètres régionaux explicitement pour éviter 03/04/2026 d’être interprétés comme le 3 avril et le 4 mars.

10. Obtenir le jour de la semaine

Scénario : Exécutez une logique différente les jours de semaine et les week-ends, ou générez un « rapport lundi ».

Expression : dayOfWeek(utcNow())

Exemple : Retourne 0 le dimanche, 1 le lundi, ..., 6 le samedi.

Conseil / Astuce

Le dimanche n’est 0pas 7. Utiliser or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) pour les vérifications de week-end. Une condition comme dayOfWeek(utcNow()) > 5 les prises samedi mais manque dimanche.

11. Calculer la différence entre deux dates

Scénario : déterminez le nombre de jours écoulés entre une date de demande et une date d’achèvement.

Expression : div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)

Exemple : Si le début est 2026-03-01 et la fin est 2026-03-18, retourne 17.

Note

Il n’y a pas de fonction intégrée dateDiff() . Vous devez utiliser l’approche des cycles. Le diviseur 864000000000 convertit les cycles en jours. Pendant les heures, utilisez 36000000000; pendant des minutes, utilisez 600000000.

12. Mettre en forme la date d’affichage

Scénario : convertissez une valeur datetime dans un format lisible par l’homme pour les e-mails ou les rapports.

Expression : formatDateTime(variables('myDate'), 'MMMM dd, yyyy') ou formatDateTime(variables('myDate'), 'MM/dd/yyyy')

Exemple : formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') retourne March 18, 2026

Important

MM est des mois, mm c’est minutes. formatDateTime(value, 'mm/DD/yyyy') produit 30/18/2026 (minutes et jour) au lieu de 03/18/2026. Utilisez dd (minuscules) pour le jour du mois.

Tableaux et collections

13. Filtrer un tableau par condition

Scénario : Obtenez uniquement les éléments d’un tableau qui correspondent à un critère spécifique.

Expression : Utiliser l’action de tableau de filtres avec : @item()?['Status'] est égale à 'Active'

Exemple : Retours d’entrée [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Note

Vous ne pouvez pas utiliser une whereexpression de filtre de style -style inline. Utilisez l’action de tableau de filtres (et non une expression). Pour le filtrage basé sur des expressions, utilisez @equals(item()?['Status'], 'Active') le mode avancé du tableau de filtres.

14. Obtenir le premier ou le dernier élément à partir du tableau

Scénario : récupérer l’enregistrement le plus récent ou la première correspondance d’une liste.

Expression : first(variables('myArray')) ou last(variables('myArray'))

Example : first(body('Get_items')?['value']) retourne le premier élément d’une requête SharePoint.

Conseil / Astuce

first() sur un tableau vide retourne null, et non une erreur. Suivez toujours avec une vérification null : if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Compter les éléments dans le tableau

Scénario : vérifiez le nombre de résultats retournés par une requête ou vérifiez qu’une liste a suffisamment d’éléments.

Expression : length(variables('myArray'))

Example : length(body('Get_items')?['value']) retourne le nombre d’éléments d’une requête SharePoint list.

Note

length() fonctionne sur les tableaux et les chaînes. length('hello') renvoie 5 (nombre de caractères). Vérifiez que vous passez un tableau, et non une chaîne qui ressemble à un tableau.

16. Créer une chaîne séparée par des virgules à partir du tableau (jointure)

Scénario : convertissez une liste de noms, d’e-mails ou d’ID en une seule chaîne délimitée pour l’affichage ou un appel d’API.

Expression : join(variables('myArray'), ', ')

Exemple : join(createArray('Alice', 'Bob', 'Carol'), '; ') retourne Alice; Bob; Carol

Conseil / Astuce

join() fonctionne sur des tableaux de chaînes. Si votre tableau contient des objets, utilisez d’abord une action Select pour extraire le champ souhaité, puis joignez le résultat.

17. Vérifiez si le tableau contient une valeur

Scénario : déterminez si un élément spécifique existe dans une liste avant de continuer.

Expression : contains(variables('myArray'), 'searchValue')

Exemple : contains(createArray('North', 'South', 'East', 'West'), 'East') retourne true

Note

Pour les tableaux d’objets, contains() recherche l’intégralité de l’objet, et non une valeur de propriété. Pour vérifier si un objet a une propriété correspondante, utilisez une action de tableau de filtres, puis vérifiez length() le résultat.

JSON et objets

18. Analyser la chaîne JSON

Scénario : une action HTTP ou un connecteur personnalisé retourne une chaîne JSON que vous devez utiliser en tant que données structurées.

Expression : json(body('HTTP'))

Exemple : json('{"name":"Alice","age":30}') retourne un objet avec ?['name']lequel vous pouvez accéder.

Important

Ne double-analysez pas. Si l’action retourne déjà json analysé (la plupart des actions du connecteur le font), l’encapsuler à json() nouveau provoque une erreur. Utilisez json() uniquement les réponses de chaîne brutes, et non sur les sorties d’action qui sont déjà des objets.

19. Obtenir la propriété imbriquée à partir de JSON

Scénario : Accédez à une valeur approfondie à l’intérieur d’une réponse JSON, par exemple response.data.items[0].name.

Expression : body('HTTP')?['data']?['items']?[0]?['name']

Exemple : Pour {"data":{"items":[{"name":"Widget"}]}}, retourne Widget.

Important

N’oubliez pas ( ? navigation sécurisée). body('HTTP')['data']['items'] lève une erreur si un niveau est null. ?['key'] Utilisez toujours pour parcourir en toute sécurité : chaque ? retour retourne null au lieu d’échouer si le parent est manquant.

20. Créer un objet JSON à partir de valeurs

Scénario : Créez un corps de requête pour une action HTTP à partir de variables de flux et de contenu dynamique.

Expression : json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))

Exemple : Avec name=Alice et status=Active, retourne {"name":"Alice","status":"Active"}.

Conseil / Astuce

Si une variable contient des guillemets ou des caractères spéciaux, le json est mal formé. Pour une construction robuste, utilisez une action Composer avec createObject('name', variables('name'), 'status', variables('status')) ou générez-la directement dans une action Compose.

21. Convertir l’objet en chaîne

Scénario : consignez un objet JSON dans un champ de texte ou transmettez des données structurées en tant que paramètre de chaîne.

Expression : string(variables('myObject'))

Exemple : string(json('{"a":1}')) retourne {"a":1} sous forme de chaîne.

Note

string() sur un tableau ou un objet produit un JSON compact (pas d’impression assez). Il n’y a pas de prédéfini prettyPrint(). Acceptez le texte compact JSON ou généré manuellement.

22. Gérer les valeurs Null ou vides en toute sécurité

Scénario : empêchez les erreurs lorsqu’un champ peut être null, vide ou manquant entièrement.

Expression : coalesce(triggerBody()?['optionalField'], 'default value')

Exemple : Si optionalField la valeur est Null, retourne 'default value'. S’il a une valeur, retourne cette valeur.

Important

coalesce() gère uniquement les chaînes nullvides, et non les chaînes vides. Pour les chaînes vides, combinez-les avec une condition : if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). La empty() fonction retourne true pour la chaîne ''null et vide.

Nombres et mathématiques

23. Arrondir un nombre

Scénario : afficher un pourcentage ou une valeur monétaire avec un nombre fixe de décimales.

Expression : formatNumber(variables('value'), 'N2') (pour l’affichage) ou div(mul(variables('value'), 100), 100) (pour la troncation)

Exemple : formatNumber(3.14159, 'N2') retourne 3.14 sous forme de chaîne.

Note

formatNumber() retourne une chaîne, et non un nombre. Si vous devez effectuer d’autres mathématiques sur la valeur arrondie, analysez-la en arrière : float(formatNumber(variables('value'), 'N2')).

24. Convertir la chaîne en nombre (et précédent)

Scénario : un formulaire ou un e-mail vous donne un nombre sous forme de texte et vous devez effectuer des calculs avec celui-ci.

Expression : int(variables('textNumber')) ou et float(variables('textNumber'))string(variables('numericValue'))

Exemple : int('42') renvoie 42. float('3.14') retourne 3.14. string(42) retourne '42'.

Important

int() sur une chaîne décimale lève une erreur ; ça ne tronque pas. Si une variable peut contenir une décimale, utilisez float() d’abord : int(float(variables('input'))). Avec des valeurs constantes telles que int('3.14'), l’erreur est interceptée au moment de l’enregistrement (InvalidTemplate), pas au moment de l’exécution.

25. Calculer le pourcentage

Scénario : afficher la fraction d’une valeur d’une autre (par exemple, taux d’achèvement, utilisation).

Expression : mul(div(float(variables('part')), float(variables('total'))), 100)

Exemple : Avec part=75 et total=200, retourne 37.5.

Important

Tronque les divisions entières. div(75, 200) retourne 0 , car les deux sont des entiers. Convertissez toujours en float en premier : div(float(75), float(200)) retourne 0.375.

Conditions et logiques

26. Si/then/else dans une expression

Scénario : retourne différentes valeurs en fonction d’une condition, sans ajouter d’action Condition au flux.

Expression : if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')

Exemple : Si l’état est Approved, retourne Proceed. Sinon, retourne Wait.

Note

La if() fonction ne prend pas en charge >les < opérateurs directement. Utilisez les fonctions d’assistance : if(greater(variables('count'), 10), 'Over', 'Under'). Comparaisons disponibles : equals(), , greater()less(), greaterOrEquals(), lessOrEquals().

27. Coalesce (première valeur non null)

Scénario : essayez plusieurs champs et utilisez le premier qui a une valeur, par exemple, le nom préféré, le nom complet, l’e-mail.

Expression : coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')

Exemple : si preferredName a la valeur Null et displayName est 'Alice', renvoie Alice.

Conseil / Astuce

coalesce() ignore, null mais pas les chaînes vides ''. Une chaîne vide est une valeur non Null valide. Combiner avec un assistance si des chaînes vides doivent également être ignorées : coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Vérifiez si la valeur est null ou vide

Scénario : vérifiez qu’un champ obligatoire a une valeur utilisable avant le traitement.

Expression : empty(variables('input'))

Exemple : empty('') renvoie true. empty(null) retourne true. empty('hello') retourne false.

Important

empty() ne fonctionne pas sur les nombres. empty(0) lève une erreur. Pour les nombres, utilisez equals(variables('num'), null) ou vérifiez d’abord le type.

29. Comparer les dates (date A après la date B ?)

Scénario : vérifiez si une échéance est passée ou si un événement s’est produit avant un autre.

Expression : greater(ticks(variables('dateA')), ticks(variables('dateB')))

Exemple : greater(ticks('2026-03-18'), ticks('2026-03-15')) retourne true (le 18 mars est après le 15 mars).

Important

La comparaison des chaînes de date directement avec greater('2026-03-18', '2026-03-15') se produit pour le format ISO (AAAA-MM-DD) car elle trie lexicographiquement. Mais il échoue pour d’autres formats. greater('03/18/2026', '12/01/2025')renvoie false parce que0<1 . Toujours utiliser ticks() pour la comparaison de dates fiables.

30. Logique booléenne (AND/OR en conditions)

Scénario : Combinez plusieurs conditions dans une seule expression, par exemple, 1 000 ET approuvées > .

Expression : and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))

Exemple : retourne true uniquement si l’état est égal Approved à 1 000 et si la quantité est supérieure à 1 000.

Note

Vous ne pouvez pas chaîner and/or avec &&/|| la syntaxe. Utilisez toujours le formulaire de fonction. Pour une logique complexe, imbriquez-les : or(and(A, B), and(C, D)). La lisibilité se dégrade avec l’imbrication profonde. Envisagez d’utiliser une action Condition avec plusieurs lignes à la place.

Carte de référence rapide

Tâche Expression
Majuscules toUpper(value)
Minuscules toLower(value)
Sous-chaîne substring(value, start, length)
Remplacer replace(value, old, new)
Fendre split(value, delimiter)
Contient (texte) contains(toLower(value), toLower(search))
Maintenant (mis en forme) formatDateTime(utcNow(), 'yyyy-MM-dd')
Ajouter des jours addDays(date, count)
Jour de la semaine dayOfWeek(date) (0=Soleil)
Jours entre div(sub(ticks(end), ticks(start)), 864000000000)
Premier élément first(array)
Dernier élément last(array)
Nombre length(array)
Unir join(array, delimiter)
Analyser JSON json(stringValue)
Safe, propriété object?['key']
Secours Null coalesce(value, default)
Est vide empty(value)
If/else if(condition, trueVal, falseVal)
Comparer les dates greater(ticks(dateA), ticks(dateB))
Int from string int(stringValue)
Flotter à partir d’une chaîne float(stringValue)
AND and(condA, condB)
OR or(condA, condB)

Remarque : L’auteur a créé cet article avec l’aide de l’IA. En savoir plus