4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-08-16

#概要
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
4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?