PowerAppsで入力した情報を、PowerAutomateで変数として利用する方法を紹介します。
アプリ完成画面

もう随分昔の話になってしまいましたが、コロナ禍に出社や出張の都度事前申請が必要となった際、怒りに任せて作成したアプリを題材とします。
機能としては、日時や訪問先を入力することで、上長への承認依頼と結果通知が自動で実施されるというものです。
Power Automateの作成
まず、全体のフローと大まかなパートを示します。

- 変数の初期化
- 承認依頼
- 結果に応じてメールで通知
まず、トリガーを選択します。
Power Automateにサインインし、「テンプレート」⇒検索バーに「Power Apps」と入力⇒下図赤枠内の「Power Appsのボタン」を選択。

①変数の初期化
「+新しいステップ」を選択して、アクションの一覧から「変数の初期化」を選択します。
アクション内の項目は、以下を参考に入力&選択してください。
・アクションのタイトル:「・・・」のボタンをクリック、メニュー一覧からアクションの名前を変更できます。
※用意する変数名などを入れておくと判りやすいです。
(下図では「変数を初期化する」を「Applicant – 変数を初期化する」に変更)
・名前:メールや承認依頼の文中では、ここで決定した名前が埋め込む変数名として候補に表示されます。後で何を格納したか判りやすい名前を。
・種類:特に変わったことをしない場合は「文字列」を推奨します。
※Power Appsで変数に格納するアイテムを参照する際に、「文字列」以外(整数など)として格納する場合、Power Apps上でデータ型の設定を工夫する場合がある?
・値:「動的なコンテンツの追加」⇒「Power Appsで確認(下図赤枠)」の順にクリック。自動的にコンテンツが追加されます。
※「Power Appsで確認」をクリックすると、このアクションを消しても追加されたコンテンツは残ってしまいます(対応方法は後述)

②承認依頼
アクション一覧のうち「開始して承認を待機」を選択します。
項目①で設定した変数を文中に追加しながら、上長に送信するメール本文を作成します。
※フローのテストをするときは、「担当者」アドレスには自分のメールアドレスを入れておきましょう。間違えて上司にメール飛ばすと大変。

③結果に応じてメールで通知
それ以前のフロー結果に応じて以降のアクションを分岐させる場合、アクション「コントロール – 条件」を追加します。承認プロセスでの上長承認結果が承認/却下の場合で条件分けをする方法は下図のとおりです。
・値の選択(左):動的なコンテンツのうち「結果」を選択
・値の選択(右):”Approve”

この組合せで、承認された時のみ「『はい』の場合」に追加されたアクションが実行されます。
Power Automateでのフロー作成は以上です。
Power Appsの編集
本稿のトップで紹介したアプリ画面のうち右上の「Submit」ボタンを押した時に、前項で追加したアクション「変数の初期化」にそれぞれのパラメータが追加されるように設定します。
クリックした時にPower Automateを起動させたいアイコンを選択した状態で、アプリ作成画面のタブから「アクション」⇒「PowerAutomate」の順に選択

画面右側に、紐付けることができるフローの一覧が表示されます。Power Automateのトリガーが「Power Apps」となっているものが表示対象です。

適切なものを選択すると、アイテムにフローが紐付けられます。

上図のように、OnSelectプロパティに「(フロー名).Run( 」のみ入力されます。カッコ内に、順番に格納先の変数に対応したアイテムを追加します。

コード内のアイテム名は皆さんそれぞれだと思いますので、大枠だけ以下に記載します。;で複数の関数を左から順に実行できるので、最後にBack関数やNavigate関数をセットしておけば、例えば別途メニュー画面を設けていた場合はそちらに戻れます。
出張申請フロー.Run(アイテム1, アイテム2, "1", アイテム3, ...); Back()
ちなみに上記のコード例の中で「”1″」という項目がありますが、これは①-1で誤って追加してしまった変数にとりあえず何らかの値を入れるための対応方法です。
なかなかRun関数内のエラーが取れない場合は、関数内で設定すべき変数の数を確認しましょう。
以上、Power AppsからPower Automateへと変数をわたす方法でした。
私も勉強不足な部分があるので、何か追加でわかったことがあれば更新します。
是非また覗きに来てください。
ちなみにPower Appsで凝ったインタフェースを作る必要の無い方は、FormsをトリガーにPower Automateに接続したほうが楽だと思います。
↑ 今更なにを言ってるんだこいつは。。。

コメント