Comment enrichir Power Automate avec des fonctions Python pour automatiser des tâches complexes ?

Power Platform est un écosystème proposé par Microsoft qui comprend plusieurs outils destinés à simplifier la modélisation sur mesure d’applications, la gestion et visualisation des données ou encore l’automatisation de certaines tâches.

PowerAutomate est l’outil qui permet l’automatisation des tâches. Cet outil est très apprécié pour sa capacité à automatiser des tâches en se connectant à divers services et applications, aussi bien au sein de l’environnement Microsoft qu’avec des outils tiers.

Contexte & problématique

L’automatisation des tâches répétitives dans de nombreuses entreprises est un enjeu majeur pour gagner en efficacité et en productivité. Power Automate permet de simplifier ces processus en créant des flux de travail automatisés reliant différentes applications et services. Il est souvent utilisé pour des actions comme l’envoi automatique d’emails, la gestion des fichiers dans le cloud, ou encore l’extraction de données depuis des bases de données et des API.

Cependant, malgré tous ses avantages et ses différents outils, certaines tâches demeurent compliquées à réaliser sans l’ajout d’outils externes. Par exemple :

  • Faire des analyses de données ou des calculs complexes.
  • Utiliser et modifier des fichiers dans des formats spécifiques non pris en charge nativement.
  • Automatiser des processus nécessitant des algorithmes plus complexes que ceux faisables avec les actions standards.


Face à ces limitations, l’intégration de fonctions Python en complément de Power Automate offre une solution pertinente. Le choix de ce langage permet d’avoir accès à une grande quantité de modules et de bibliothèques. Sa flexibilité ainsi que sa facilité de prise en main en font un excellent choix pour compléter les flux d’automatisation, même pour une personne ayant peu de notions de développement. L’enjeu est donc d’intégrer ces scripts de manière efficace sans complexifier et ralentir les flux créés.

Analyse Technique

Pour incorporer ces fonctionnalités Python de manière optimisée et simple, nous utilisons l’environnement Azure :

En premier lieu, il faut créer une ressource fonction afin d’avoir un outil qui accueille les fonctions. Il faut que les fichiers soient structurés d’une certaine façon pour pouvoir être exécutables pour Azure Functions. La structure doit être la suivante :

Dans le dossier qui contient le fichier principal :

  • __init__.py : C’est le fichier principal.
  • Autres fichiers .py 
  • .env.example : Permet de lister les potentielles variables d’environnement.
  • function.json : Permet d’utiliser la fonction avec des API.
  • host.json : Permet de rendre la fonction compatible avec Azure.


Dans le dossier supérieur qui sera envoyé :

  • Le dossier contenant tous les éléments mentionnés précédemment.
  • requirements.txt : Liste tous les modules et bibliothèques importés dans les fonctions. Azure pourra ainsi les importer automatiquement. Il doit obligatoirement contenir la ligne azure-functions = version.
  • host.json


Ensuite, il faut tout importer dans l’environnement Azure. Pour cela, il faut suivre ces étapes :

  • Ouvrir un terminal et se placer dans le dossier supérieur.
  • Se connecter avec le tenant ID via az login –tenant xxxxxxxxxxxxxxxxxxxxxxx
  • Uploader la fonction via func azure functionapp publish <nom de la ressource fonction créée> --python.
  •  

Pour finir, il faut pouvoir l’utiliser dans un flux Power Automate. Il faut récupérer l’URL ainsi que la clé d’application. Ensuite, dans Power Automate, il faut ajouter un bloc HTTP et mettre les informations suivantes :

  • Méthode : POST
  • URL : URL de la fonction Azure.
  • En-têtes : Content-Type : application/json, x-functions-key : clé d’application.
  • Corps : Élément demandé dans le main().
  •  

Exemple

Lors de l’utilisation de Power Automate pour communiquer avec l’IA, nous avions des erreurs lors de calculs complexes. Ce problème était impactant car le flux pouvait être utilisé pour des services importants comme le pôle comptabilité ou RH d’une entreprise, où les calculs doivent être exacts.

Pour résoudre ce problème, nous avons rajouté dans le flux une fonction Python. Cette fonction permet d’effectuer des calculs impossibles en Power Automate, et de manière très simple.

Elle est déclenchée par une requête HTTP via le flux :

En entrée, elle récupère la chaîne de caractères contenant le calcul,

  • Elle utilise la fonction eval() incorporée à Python,
  • En sortie, elle renvoie le résultat.


Malgré sa simplicité, elle permet de corriger une erreur importante.

Une fois la fonction exécutée, elle renvoie les résultats au flux.

Conclusion

L’intégration de Python dans Power Automate grâce à Azure Functions constitue une solution efficace pour étendre les capacités de l’automatisation des tâches. En complément des outils proposés par Microsoft, Python permet d’ajouter des fonctionnalités avancées, notamment pour :

– Les calculs complexes
– La manipulation de formats spécifiques
– L’interaction avec des API non prises en charge nativement

L’exemple de l’amélioration du flux illustre bien l’intérêt de cette approche : une simple fonction Python a permis de corriger une faille et d’améliorer la fiabilité d’une application utilisée dans des domaines sensibles où les calculs sont essentiels.

Cela démontre que l’ajout de Python à Power Automate, bien que nécessitant un paramétrage initial, peut apporter une réelle valeur ajoutée en termes de :

– Performance
– Flexibilité
– Précision

Ainsi, cette approche ouvre la voie à de nombreuses améliorations dans l’automatisation des processus métiers, rendant Power Automate encore plus puissant et adaptable aux besoins spécifiques des entreprises.

Aurélien Logeais, Assistant Business App chez Kaizzen

Prêt à parler
avec un expert ?