
この記事はFIXER Advent Calendar 2021(https://adventar.org/calendars/6838)5日目の記事です。
こんにちは、あおいです。
さて、エンジニアの方々にとっては当たり前のことですが、開発業務でプログラミングをしている時に、同じような処理を実装することがよくあります。そんな時はいくつも同じ処理を実装せずに、共通処理として1つの関数を定義して色々な場所から呼び出しますよね。皆さんお馴染みの関数化(メソッド)です。
Power Automateでも同様のことが言えます。
例えば、1つのフローにたくさんのアクションを詰め込みすぎると、どこで何の処理が発生しているのか把握が困難になり可読性が落ちてしまいます。また、1つのフローに同じ処理を作るのも非効率です。
Power Automateの場合、子フローと親フローを作成して共通処理となるフローの部品化をします。これがプログラミングの関数化に該当します。
そこで、今回はPower Automateで共通処理となるフローの部品化を実装する方法を紹介したいと思います。
Microsoftの公式ドキュメントにもやり方は掲載されているのですが、説明が難しくて挫折してしまう方がいらっしゃると思ったので、GUI形式のハンズオンで分かりやすく説明します。
まず、Power Automateの[ソリューション]タブから[新しいソリューション]を選択して、[表示名][名前][公開元]など各項目を設定してソリューションを作成します。

作成したソリューションから、[新規]⇒[自動化]⇒[クラウドフロー]⇒[すぐに]を選択します。

今回は「Excelにデータを追加する」フローを部品化してみます。
まず、部品化したいフローとなる子フローを作成します。
フロー名[Excel_ChildFlow]と入力して[手動でフローをトリガーします]をトリガーとします。

親フローから子フローに渡す値を設定します。

[Excel Online(Business)]コネクタの[表に行を追加]アクションを選択します。
場所[該当の場所を選択]、ドキュメントライブラリ[ドキュメント]、ファイル[事前に用意したExcelファイル(今回はPersonalInfo.xlsx)]、テーブル[PersonalInfo]など各項目を設定していきます。
また、子フローに渡す値の項目には動的なコンテンツからそれぞれ選択します。

組み込みタブの[Power Apps]コネクタから[PowerApp または Flow に応答する]アクションを選択します。出力の種類[テキスト]タイトルの入力[result]値の入力[success]など各項目を設定します。

フローデザイナー画面に戻り、実行のみのユーザーの編集ボタンから[実行専用のユーザーによって提供されました]を[この接続を使用する」に変更して保存します。
※こちらの設定をしないとフロー実行した場合、エラー表示になってしまいますので必ず設定をしましょう。

次に、部品化したフローを呼び出す親フローを作成します。
フロー名 [ParentFlow]と入力して[手動でフローをトリガーします]をトリガーとします。

子フローと同様に、親フローから子フローに渡す値を設定します。

組み込みタブから[フロー]もしくは[Flow button for mobile]を選択すると、子フローの実行が表示されます。
子フローの項目には先ほど作成した[Excel_ChildFlow]を選択し、子フローに渡す値の項目には動的なコンテンツからそれぞれ選択します。


これで親フローと子フローの作成は完了しました!試しに親フローの実行をしてみましょう!
きちんと子フローが呼び出されて、Excelにデータ追加も正常に動作しています!


子フローは部品化されているので、何度でも呼び出しが簡単に可能です!

今回は Power Automateで共通処理となるフローの部品化をする方法を紹介させていただきました。
本記事が少しでも読者の皆様のお役に立てれば幸いです。