はじめに
Power Appsにて、普通のプログラミングのように配列内の要素をforeachでぶん回して判定処理をさせたいと思ったことがあるかと思います。(カンマで区切られた文字列に対して、それぞれの要素があるフォーマットに従っているか など・・・)
が、悲しいことにPower Appsではforeachにあたる「ForAll」関数内では変数を更新する「Set」「UpdateContext」関数を利用することができません。
「Collect」関数を用いて判定OK要素を格納するコレクションとNG要素を格納するコレクションを用意することで代替できます。気持ち悪いことこの上無いですが、仕方がないのでこうするしかありません。別の良い案をご存じの方居たらコメントください。
実現方法
以下のような画面で、「TextInput」にカンマ区切りで入力されたメールアドレスが正しいかを判定しています。ボタンのOnSelect()に以下の処理を入れて、カンマ区切りした値が正しいか正しくないかに応じて別のコレクションに格納します。
Clear(ValidCollection);
Clear(NotValidCollection);
ForAll(
Split(
TextInput1.Text,
","
),
If(
IsMatch(
Value,
Match.Email
),
Collect(
ValidCollection,
Value
),
Collect(
NotValidCollection,
Value
)
)
)
以下のようにエラーメッセージ用ラベルも用意することでそれっぽいエラー判定ができるようになります。
If(
CountRows(NotValidCollection) > 0,
"エラーがあります"
)