見出し画像

PythonでPower Automateのクラウドフローを開発できるPyPowerAutomateライブラリを試してみました。

先日、興味深いNTTセキュリティ( @NTTSH_JP )さんのポストを見つけました。

PythonでPower Automateのクラウドフローを開発できる、開発者向けのライブラリ「PyPowerAutomate」(BSD-3-Clauseライセンス)を公開したとのこと。

これは面白そう!
さっそく試してみました。


実行環境

試した環境は下記の通りです。
PyPowerAutomateが対応しているPythonのバージョンは 3.10 以上となっています。

  • Anaconda 24.3.0

  • Python 3.11.9

PyPowerAutomateのインストール

インストールは簡単で、下記コマンドを実行するだけです。

pip install pypowerautomate

PyPowerAutomateによるクラウドフロー作成

インストールが終わったらGitHubに載っている簡単なサンプルコードを実行してみます。

from pypowerautomate.flow import Flow
from pypowerautomate.triggers import ManualTrigger
from pypowerautomate.actions import InitVariableAction,IncrementVariableAction,VariableTypes
from pypowerautomate.package import Package

flow = Flow()

flow.set_trigger(ManualTrigger("Button"))

flow.add_top_action(InitVariableAction("action1","a",VariableTypes.integer,1))
flow.append_action(IncrementVariableAction("action2","a",2))

package = Package("incremental_test",flow)
package.export_zipfile()

上記コードを実行すると、スクリプトファイルと同じフォルダに「incremental_test.zip」ファイルが出力されました。

PyPowerAutomateの紹介ページに書かれている通り、このZipファイルがLegacy Packageであり、このファイルをインポートして使うわけですね!

Legacy Packageのインポート

Zipファイルが出力できたので、Power Automateの My flows → Import → Import Package (Legacy) からファイルをアップロードします。

無事にアップロードが終わったら、そのまま「Import」ボタンをクリックします。

フローの管理画面を開くと無事にインポートされていることが確認できるので、フローをオンにします。

フローを開くとトリガーと「action1」、「action2」が追加されていることが確認できます。

フローをテスト実行したところ、PyPowerAutomateのコードの通りの動きをすることが確認できました。


おわりに

以上のように、PyPowerAutomateを使うと非常に簡単にクラウドフローを作成できました。

TeamsやOffice 365 Outlook等のコネクタにも対応しており、メールを送信するフローも簡単に作成できます。

from pypowerautomate.flow import Flow
from pypowerautomate.triggers import ManualTrigger
from pypowerautomate.actions import Outlook365SendAnEmailV2
from pypowerautomate.package import Package

flow = Flow()
flow.set_trigger(ManualTrigger("Button"))
flow.add_top_action(Outlook365SendAnEmailV2("SendMail", "to@***.onmicrosoft.com", "Test Mail", "Hello world.", "Normal"))

package = Package("SendMail",flow)
package.set_outlook365_connector("shared-office365-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
package.export_zipfile()

ノーコード/ローコードサービスであるPower Automateのフローを作るのに敢えてコードを書くという点で本末転倒感があることは否めませんが、

このライブラリを使うことで、どうしてもPower Automateを使わなければいけない状況に立たされたエンジニアがPythonでPower Automateのクラウドフローを開発できるようにすることを目指しています。

https://jp.security.ntt/tech_blog/pac2-pypowerautomate より

とのこと。
元々エンジニアの利用を想定しているわけですね!

Pythonに慣れている方であれば便利に使えるライブラリだと思いますので、興味がある方は是非一度試してみてください。

参考Webサイト

この記事が気に入ったらサポートをしてみませんか?