Partager via


Power Fx dans les flux de bureau

Power Fx est le langage low-code permettant d’exprimer la logique sur l’ensemble de Microsoft Power Platform. C’est un langage de programmation polyvalent, fortement typé, déclaratif et fonctionnel.

Power Fx est exprimé dans un texte convivial. C’est un langage à faible code avec lequel les créateurs peuvent travailler directement dans une barre de formule de type Excel ou une fenêtre de texte de Visual Studio Code. Le mot "faible" dans faible code décrit la nature concise et simple du langage, rendant les tâches de programmation courantes faciles pour les créateurs et les développeurs.

Power Fx rend possible toute la gamme de développement, depuis les créateurs sans code sans aucune connaissance en programmation jusqu’au mode pro-code pour les développeurs professionnels. Il permet à diverses équipes de collaborer et d’économiser du temps et des efforts.

Utilisation de Power Fx dans le flux de bureau

Pour utiliser Power Fx comme langage d’expression dans un flux de bureau, vous devez créer un flux de bureau et activer le bouton bascule respectif lors de la création du flux via la console de Power Automate pour le bureau.

Capture d’écran du bouton Activer Power Fx

Différences dans les flux compatibles avec Power Fx

Note

Chaque expression Power Fx doit commencer par = (signe égal).

Si vous effectuez une transition à partir de flux où Power Fx est désactivé, vous remarquerez peut-être des différences. Pour simplifier votre expérience lors de la création de nouveaux flux de bureau, voici quelques concepts clés à garder à l’esprit :

  • De la même manière que les formules Excel, les flux de bureau qui utilisent Power Fx comme langage d’expression utilisent l’indexation de tableau basée sur 1 (un) au lieu de l’indexation basée sur 0 (zéro). Par exemple, l’expression =Index(numbersArray, 1) renvoie le premier élément du tableau numbersArray.

  • Les noms de variables respectent la casse dans les flux de bureau avec Power Fx. Par exemple, NewVar est différent de newVar.

  • Lorsque Power Fx est activé dans un flux de bureau, l’initialisation de la variable est requise avant l’utilisation. Toute tentative d’utilisation d’une variable non initialisée dans les expressions Power Fx génère une erreur.

  • L’action If accepte une seule expression conditionnelle. Auparavant, elle acceptait plusieurs opérandes.

  • Alors que les flux sans Power Fx activé contiennent le terme « Valeur générale » pour désigner un type d’objet inconnu, Power Fx s’articule autour d’un système de type strict. Dans les flux compatibles avec Power Fx, il existe une distinction entre les variables dynamiques (variables dont le type ou la valeur peut être modifié pendant l’exécution) et les valeurs dynamiques (valeurs dont le type ou le schéma est déterminé au moment de l’exécution). Pour mieux comprendre cette distinction, prenez l’exemple suivant : L’élément dynamicVariable change son type pendant l’exécution d’une valeur Numeric à une valeur Boolean, tandis que l'élément dynamicValue est déterminé pendant l’exécution comme étant un objet sans type, dont le type réel est un Custom object :

    Capture d’écran montrant la définition d’une variable dynamique et d’une valeur dynamique.

  • Les valeurs traitées comme des valeurs dynamiques sont les suivantes :

    • Tables de données
    • Objets personnalisés avec un schéma inconnu
    • Sorties d’action dynamiques (par exemple, l’action « Exécuter le script .NET »)
    • Sorties de l’action « Exécuter le flux de bureau »
    • Toute sortie d’action sans schéma prédéfini (par exemple, « Lire à partir d’une feuille de calcul Excel » ou « Créer une liste »)
  • Les valeurs dynamiques sont traitées de la même manière que l’objet sans type Power Fx et nécessitent normalement que les fonctions explicites soient converties dans le type requis (par exemple, Bool() et Text()). Afin de simplifier votre expérience, une conversion implicite est appliquée lors de l’utilisation d’une valeur dynamique en tant qu’entrée d’action ou dans le cadre d’une expression Power Fx. Il n’y a pas de validation lors de la création, mais en fonction de la valeur réelle pendant l’exécution, une erreur d’exécution se produit si la conversion échoue.

  • Chaque fois qu’une variable dynamique est utilisée, un message d’avertissement indiquant « Type différé fourni » s’affiche. Ces avertissements se produisent en raison de l’exigence stricte de Power Fx pour les schémas fortement typés (types définis de manière stricte). Les variables dynamiques ne sont pas autorisées dans les listes, les tables ou en tant que propriété pour les valeurs d’enregistrement.

  • En combinant l’action Exécuter l’expression Power Fx avec des expressions utilisant les fonctions Collect, Clear, ClearCollect et Patch, vous pouvez émuler le comportement trouvé dans les actions Ajouter un élément à la liste et Insérer une ligne dans la table de données, qui n’étaient pas disponibles auparavant pour les flux de bureau compatibles avec Power Fx. Bien que les deux actions soient toujours disponibles, utilisez la fonction Collect lorsque vous travaillez avec des listes fortement typées (par exemple, une liste de fichiers). Cette fonction garantit que la liste reste typée, car l’utilisation de l’action Ajouter un élément à la liste convertit la liste en un objet sans type.

Examples

  • =1 dans un champ de saisie est équivalent à la valeur numérique 1.
  • = variableName est égal à la valeur de la variable variableName. 
  • L’expression = {'prop':"value"} retourne une valeur d’enregistrement équivalente à un objet personnalisé.
  • L’expression = Table({'prop':"value"}) renvoie une table Power Fx équivalente à une liste d’objets personnalisés. 
  • L’expression - = [1,2,3,4] crée une liste de valeurs numériques.
  • Pour accéder à la valeur d’une liste, utilisez la fonction Index(var, number) où var est le nom de la liste et number est la position de la valeur à récupérer.
  • Pour accéder à une cellule de table de données à l’aide d’un index de colonne, utilisez la fonction Index(). =Index(Index(DataTableVar, 1), 2) récupère la valeur de la cellule dans la ligne 1 de la colonne 2. =Index(DataRowVar, 1) récupère la valeur de la cellule dans la ligne 1.
  • Pour inclure une valeur interpolée dans une entrée ou un sélecteur d’élément d’interface utilisateur/web, utilisez la syntaxe suivante : Text before ${variable / expression} text after
    • Exemple : The total number is ${Sum(10, 20)}

Note

Si vous souhaitez utiliser le signe dollar ($) suivi d’une accolade ouvrante ({) dans une expression Power Fx ou dans la syntaxe d’un sélecteur d’éléments IU/Web et que Power Automate pour le bureau ne le traite pas comme la syntaxe d’interpolation de chaîne, assurez-vous de suivre cette syntaxe : $${ (le premier signe dollar agira comme un caractère d’échappement)

Fonctions Power Fx disponibles

Pour obtenir la liste complète de toutes les fonctions disponibles dans Power Automate pour les flux de bureau, consultez Référence de formule – Flux de bureau.

Problèmes connus et limitations

  • Les actions suivantes de la bibliothèque standard d’actions d’automatisation ne sont pas actuellement prises en charge :
    • Permuter
    • Cas
    • Cas par défaut
  • Certaines fonctions Power Fx présentées via IntelliSense ne sont pas actuellement prises en charge dans les flux de bureau. Ces fonctions affichent l’erreur de conception suivante lorsqu’elles sont utilisées : « Paramètre « Value » : le type PowerFx « OptionSetValueType » n’est pas pris en charge. »

Nouveautés

Cette section répertorie ce qui a changé dans chaque mise à jour.

2.48

Dans la version de septembre 2024 :

  • Réactivez les actions de manipulation de liste et de table de données précédemment non prises en charge à partir de la catégorie Variables.
  • Prise en charge native de l’objet sans type, pour les objets, listes et tables de données personnalisés. Pour en savoir plus sur les objets sans type, consultez Type de données d’objet sans type.
    • Cette modification a été introduite pour réduire les avertissements au moment de la conception et l’utilisation des types différés. L’objet sans type est un moyen de gérer les types avec un schéma inconnu au moment de la conception.
    • Dans les versions précédentes, les variables dynamiques (variables dont le type ou la valeur peut être modifié pendant l’exécution) et les valeurs dynamiques (valeurs dont le type ou le schéma est déterminé au moment de l’exécution) sont gérées de la même manière. Lorsqu’une valeur dynamique ou une variable dynamique était utilisée dans une expression Power Fx, un avertissement était déclenché : « Type différé fourni ». Ces avertissements se sont produits parce que Power Fx applique des schémas de type strict (types fortement définis). À partir de cette version, nous avons distingué ces deux cas. Alors que les variables dynamiques continuent de générer l’avertissement de « type différé », les valeurs dynamiques sont désormais traitées comme des objets sans type.
    • Toutes les variables de la table de données n’ont pas de type, tandis que les objets personnalisés résultant de l’action Convertir JSON en objet personnalisé n’ont pas de type. Les listes deviendront sans type après les avoir manipulées avec des actions Power Automate pour le bureau à partir de la catégorie Variables.
    • Auparavant, certaines actions d’automatisation de la bibliothèque d’actions standard, telles que Lire à partir d’Excel, Lire à partir de CSV, Extraire les données du web, Extraire les données de la fenêtre, Exécuter l’instruction SQL et Convertir JSON en objet personnalisé produisaient une variable dynamique, ainsi qu’un avertissement de « type différé ». Elles produisent maintenant une table de données sans type ou une variable d’objet personnalisé sans type à la place.
  • La fonction Set de Power Fx est désormais activée, mais pas encore entièrement prise en charge. Bien qu’elle ne puisse pas être utilisée pour modifier directement la valeur d’une variable, elle peut être utilisée avec les structures ci-dessus pour également mettre à jour les propriétés d’un objet personnalisé et les valeurs de listes dans des index spécifiques (par exemple, =Set(Index(Index(DataTable, 1), 1), 42) ou =Set(customObject.property, 17)).
  • Correction d’un problème d’accès aux propriétés de liste imbriquées d’un objet dans les flux compatibles avec Power Fx.

Avertissement

Dans la version 2.48 de Power Automate pour le bureau, des mises à jour ont été apportées aux flux de bureau compatibles avec Power Fx qui pourraient avoir un impact sur l’exécution des flux compatibles avec Power Fx créés avec des versions antérieures. Il est conseillé de tester minutieusement cette version avec vos flux Power Fx existants.

  • Sorties du flux enfant : soyez prudent lorsque vous utilisez des variables de sortie de flux enfants dans un flux de bureau compatible avec Power Fx. Cela implique des variables de sortie de types liste, objet personnalisé et table de données.
  • Tableaux de colonnes à valeur unique : un tableau créé à l’aide d’une expression comme =[1, 2, 3] génère un tableau de colonnes à valeur unique dans les flux compatibles avec Power Fx dont les éléments sont des objets avec une seule propriété : {Value: 1}. Toute tentative d’accès à la propriété Value de cet élément, après avoir modifié le premier tableau avec une action, entraîne une erreur de création.
  • Utilisation des fonctions Power Fx : dans certaines fonctions Power Fx telles que IsEmpty(), les versions précédentes acceptaient une variable dynamique comme argument et ne généraient pas d’erreur de validation. Avec la version 2.48, l’utilisation d’une variable traitée comme une variable dynamique entraîne une erreur de validation et un échec de l’exécution des flux existants. La résolution à ceci est d’appliquer une conversion appropriée à la valeur dynamique (sans type). En savoir plus sur le cast de fonctions, consultez Type de données d’objet sans type. Vous pouvez rencontrer ce problème lors de la modification d’un flux et recevoir un message d’erreur tel que « Type d’argument non valide (UntypedObject). Valeur Table attendue à la place. » Pour résoudre ce problème, suivez les messages d’erreur pour convertir votre expression en une expression valide.
    • D’autres exemples de fonctions qui peuvent générer une erreur de validation lors de l’utilisation d’une combinaison de variables dynamiques et typées sont Sum(), Filter(), Concatenate() et les opérateurs tels que in (par exemple, "string" in DynamicValueObject).
  • Comparaison de variables : comme pour le problème mentionné précédemment, il peut y avoir des incompatibilités de types lorsque vous appliquez des opérateurs de comparaison (=, <>, >, < etc.) sur des expressions impliquant des valeurs dynamiques. Faites preuve de prudence et appliquez la conversion appropriée avant de comparer des valeurs dynamiques.

2.43

Dans la version d’avril 2024 :

  • Sensibilité à la casse. Par exemple, NewVar est une variable différente de newVar.
  • L’action Exécuter l’expression Power Fx est disponible dans le groupe d’actions Variables. Exécuter l’expression Power Fx vous permet d’exécuter des expressions directement sur des sources de données.
  • Les fonctions Power Fx Collect, Clear, ClearCollect sont prises en charge dans les flux de bureau.
  • Les fonctions Patch de Power Fx sont prises en charge dans les flux de bureau.
  • Les variables et les expressions Power Fx peuvent être utilisées dans la syntaxe du sélecteur d’éléments IU ou web.
  • Les valeurs interpolées peuvent désormais être incluses dans la syntaxe d’un sélecteur d’éléments IU/web. Pour les chaînes interpolées, vous pouvez utiliser cette syntaxe : ${ Power Fx expression }.

Important

Dans la version 2.43 de Power Automate pour le bureau, des mises à jour ont été apportées aux flux de bureau compatibles avec Power Fx qui pourraient avoir un impact sur l’exécution des flux de bureau compatibles avec Power Fx créés avec des versions antérieures. Plus précisément :

  • Noms de variables sensibles à la casse : les noms de variables dans les flux de bureau compatibles avec Power Fx créés avec Power Automate pour le bureau version 2.43 et ultérieure sont sensibles à la casse. Les flux de bureau Power Fx créés avec Power Automate pour le bureau version 2.42 et antérieure autorisent des noms de variables qui ne sont pas sensibles à la casse. Par exemple, NewVar et newVAR font référence à la même variable. Pour les flux de bureau compatibles avec Power Fx créés avec Power Automate pour le bureau version 2.42 et antérieure, assurez-vous d’examiner et de vérifier que les variables produites sont conformes aux attentes.

2.42

Dans la version de mars 2024 :

  • Les fonctionnalités IntelliSense sont désormais disponibles pour les flux de bureau activés pour Power Fx.
    • Colorisation de la syntaxe
    • Fonctionnalité d’autocomplétion lors de la saisie avec des suggestions en temps réel
    • Assistants de signature pour les fonctions Power Fx

Note

Les fonctionnalités IntelliSense sont disponibles pour les expressions. Pour saisir une expression, utilisez le signe égal (= votre expression ) au début de l’entrée respective ou la notation d’interpolation de chaîne ( ${ votre expression } ).

  • Sélecteur de fonctions
    • Vous pouvez accéder au sélecteur de fonctions à l’aide du bouton fx dans la vue lorsque vous interagissez avec les entrées respectives. Toutes les fonctions Power Fx actuellement prises en charge pour les flux de bureau y sont disponibles.

2.41

Dans la version de février 2024 :

  • Désormais, les entrées qui ne commencent pas par le signe égal (=) sont considérées comme des valeurs de type texte. Les entrées numériques et booléennes doivent toujours commencer par le signe égal.
  • Les entrées prennent désormais en charge les chaînes interpolées. Pour inclure une valeur interpolée dans une entrée, utilisez la syntaxe suivante : Text before ${variable/ expression} text after
    • Exemple : The total number is ${Sum(10, 20)}

Note

Pour utiliser la syntaxe de la chaîne interpolée, omettez le signe égal (=) au début de l’entrée.

2.39

Dans la version de décembre 2023 :

  • Si l’entrée fournie ne commence pas par le signe égal, les règles suivantes s’appliquent :
    • Les valeurs numériques sans espaces sont interprétées comme des valeurs numériques.
    • True/False en entrée, quelle que soit la casse et sans espaces, sont interprétés comme des valeurs booléennes.
    • Toutes les autres entrées sont considérées comme des valeurs de type texte.