Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@sukkyxp

PowerAppsとflowで入力チェック処理

概要

PowerAppsのキャンバスアプリケーションで入力チェック処理を実装する。
チェク処理自体はFlowで実施する。
PowerAppsからFlowに画面の入力値をJSONメッセージにして引数で渡す。
Flowで入力チェック処理結果を応答メッセージとして、処理結果コード値とエラーメッセージを文字列で
返却する。
エラー表示はラベルコントロールを使う。
ラベルコントロールの値を動的に変更するために、ローカル変数を使用する。
PowerAppsとFlowとの引数と応答メッセージの値は文字列のみを使用する。

PowerAppsの画面の作成

キャンバスアプリを新規作成し、Screen1にラベル、入力テキスト、ラベル、ボタンを順に貼り付ける。

コントロール 名前 テキスト
ラベル Label1 理由:
入力テキスト TextInput1 (空白)
ラベル LblErrorMessage (空白)
ボタン BtnCommit 入力チェックテスト

テスト用の画面レイアウト

InputValidateImage.png

画面の表示イベントでエラー表示用変数を初期化する。

Screen1のOnVisibleに下記の式を入力する。

UpdateContext({ErrorMessage:""});

UpdateContextは変数を更新する処理を行う。
引数はJSONメッセージで指定する。
上記はErrorMessage変数を空白文字列で初期化している。

LblErrorMessageと変数を紐付ける

LblErrorMessageのText属性に下記の変数名を入力する。

ErrorMessage

この設定によりErrorMessage変数の値がLblErrorMessageコントロールに表示される。

CheckValueフローの作成

CheckValueFlow.png

PowerAppsボタンをトリガーとするCheckValueフローを作成し、上記のようにアクション追加する。
変数の初期化はPowerApps応答で返却する変数の初期化を行っている。
JSONの解析はPowerAppsからの引数をJSONメッセージとして受け取るため、受け取ったJSONメッセージ
を変数に解析する。
条件アクションはチェック処理を実施する。

JSON解析

JSON.png

判定処理

hantei.png

JSONから取得したwhyの値が空文字列の場合はresult=1、messageにエラーメッセージを設定する。

FlowからPowerAppsへの値の返却

flowresponse.png

resultとmessageを返却する。
ともに文字列とする、Flowの型とPowerAppsの型がBoolや数値だとうまく判定処理で一致しないため、
文字列を使用する。

また、Flowで使用する変数を追加、更新した場合はPowerAppsからFlowの参照がうまくいかない場合がある。
その場合は一旦、PowerAppsからFlowへの参照を削除してから追加しなおす必要がある。

PowerApps側のボタンのOnSelectの処理

BtnCommitびOnSelectに下記の式を入力する。

UpdateContext({params:JSON({why:If(IsBlank(TextInput1.Text),"",TextInput1.Text)})});
UpdateContext({result:CheckValue.Run(params)});
UpdateContext({ErrorMessage:If(result.result="0","",result.message)});
If(result.result="0",KintaiFlow.Run(params),"");

1行目:params変数にJSONメッセージを設定。未入力の時にNullを渡すとFlow側のJSON解析処理でエラーになるため、空文字を渡す。
2行目:params変数を引数としてCheckValueフローを起動し、応答メッセージをresult変数に設定。
3行目:resultメッセージのresultの値が0の場合は正常終了なので、ErrorMessage変数を空文字列で初期化。0以外の場合はresult.messageを設定。
4行目:チェック処理が正常終了の場合に本来の起動したい処理(KintaiFlow)を起動。

実行例

未入力の場合

minyuryoku.png

入力した場合

nyuryoku.png

フロー側の処理ログ

Flow側の呼び出し履歴からFlowの処理ログが確認できる。
flow_log.png

バージョン

アプリ バージョン
powerapps 3.19081.20
6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
6
Help us understand the problem. What is going on with this article?