くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【PowerApps】アプリに完了ダイアログを表示させる方法

・はじめに

こんにちは、くらっちです。

今回紹介するのは、Power Automate の処理後に Power Apps にダイアログを出す方法です。
Power Automateからの戻り値を利用してダイアログ(ラベル)の表示・非表示を制御します。

※この記事はQiita から移行して、最新の情報に更新しています。

f:id:kurakurattyo:20211120222740p:plain

・目次

・処理の流れ

今回は、「PowerApps で画像保存ボタンをクリック」⇒「PowerAutomate で処理」⇒「PowerApps に処理完了のダイアログを表示させる」アプリを例にご紹介します。
ダイアログを表示させる場合の、おおまかな流れはこんな感じ。

 1. Power Appsで保存ボタンをクリック
 2. ボタンクリックをトリガーにPower Automateが起動
 3. Power Automateの処理が終了
 4. Power Apps上で完了のメッセージを表示する

f:id:kurakurattyo:20211120225605p:plain

・実装方法

1.Power Automate側で対象フローの編集画面を表示

トリガーは「PowerApps」を選択します。
Power Appsから呼び出されるフローの編集画面を表示します。
処理の最後に「PowerApps または Flow に応答する」 を追加します。

f:id:kurakurattyo:20211120223041p:plain

2.「出力追加」をクリックして「テキスト」を選択

「PowerApps または Flow に応答する」を追加したら「出力追加」をクリックします。
「出力の種類を選択」で「テキスト」を選択します。

3.変数名と返り値を設定

変数名と設定値は任意です。好きに設定して下さい。
サンプルでは Power Apps に「Flowflg = 1」を渡すように設定しています。

f:id:kurakurattyo:20211120230358p:plain

5.フローを保存

フローを保存します。

6.Power Automateから戻り値を受け取る

Power Appsアプリの編集画面を表示します。
Power AppsからPower Automateを呼び出すアクション(ボタンなど)を下記のように修正します。

修正前(例)

 フロー名.Run(Label1.Text,Label2.Text,label3.Text);


修正後(例)

UpdateContext({Resp:
 フロー名.Run(Label1.Text,Label2.Text,label3.Text)
});
Set(ResultMessage,Resp.flowflg);

これで Power Automate 側から「flowflg」の値を取得できます。
取得した flowflg の値は、変数 ResultMessage にセットされます。

PowerAutomate の処理が未終了の場合は、ResultMessage に "0" が設定されており、
処理が終了したら ResultMessage に "1" が設定されている状態となります。

7.以降で、
ResultMessage = "0" の時は「完了ダイアログを非表示」にして、ResultMessage = "1" の時は「完了ダイアログを表示」するようにPower Apps を編集します。

7.完了ダイアログの配置と設定

完了ダイアログ表示中は他部分の操作ができないように、下図の通りにラベルとアイコンを設置します。
設置する際は「Cansel_Icon」が一番上に設置されていないと、アイコンをクリックすることができないので注意してください。

f:id:kurakurattyo:20211120230447p:plain


各パーツを下記の通り修正します。※デザイン部分は皆さんのセンスにお任せです。

BGCover_Label

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
DisplayMode DisplayMode.View 表示モードに変更


Message_Label

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
DisplayMode DisplayMode.View 表示モードに変更


Cansel_Icon

項目 設定値 用途
Visible If(ResultMessage="1",true,false) 完了ダイアログの 表示 / 非表示 を制御
OnSelect Set(ResultMessage,"0") クリック時に完了ダイアログを非表示にする

以上です。
皆様の Power Apps ライフのお役に立てば幸いです。