Power FxのCoalease関数が非常に便利だったので使い方をメモ。
Coalease関数
Coalease関数は引数で渡した値を順番に評価し、空白または空文字以外の最初の引数を返す関数。
あまりこのCoalesce関数は使ったことがなかったんだけど、とても便利で色々と使えたりする。
※ちなみに読み方はコアレスとかコーレスとからしい
公式:
![]()
![](https://ippu-biz.com/wp-content/uploads/cocoon-resources/blog-card-cache/62becbf9e66edbd7a674a2191e28faef.png)
Blank、Coalesce、IsBlank、および IsEmpty 関数 - Power Platform
Blank、Coalesce、IsBlank、IsEmpty 関数の構文と例を含む参照情報。
使い方1:Patch関数と一緒に
例えばこんなリストがあって、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce001.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce001.png)
こんなUIがあって、もし提出ボタンを押したユーザーの情報があれば更新し、なければ新規追加するという動作を実現するとして、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce001-2.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce001-2.png)
Patch関数を使ってIfとIsBlankで実現するとこんな感じの式になると思うけど、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce002-1024x464.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce002-1024x464.png)
Coalesce関数を使うとこんな感じに書ける。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce003-2-1024x530.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce003-2-1024x530.png)
こうするとPatch関数の戻り値を見て通知を出したいときにWith関数を使ってこんな感じで簡単に実現できるため、個人的に好き。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce003-3-1024x422.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce003-3-1024x422.png)
もちろんちゃんと動いて初回はこんな感じで新規追加、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce004.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce005.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce004.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce005.png)
2回目以降はこんな感じで更新がかかる。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce006.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce007.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce006.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce007.png)
使い方2:項目が1つでも入力されていたらDisplayMode.Enableにするとき
例えばこんなUIがあって、項目が1つでも入力されていたらボタンを活性化する場合、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce007-2.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce007-2.png)
Ifを使って実現するとこんな感じになると思うけど、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce008-1024x684.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce008-1024x684.png)
Coalesceを使うとこんな感じで実現できる。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce009-1024x631.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce009-1024x631.png)
項目の数が10とか20とかになったとき(そんなことあるかわからないけど)、その分「If(IsBlank(…」を書かなくて済むのは結構ありがたいかなと。
ということでまだまだ使い道を探し中だけど、覚えておいて損のない関数の一つかなと思ったのでここにメモ。
おまけ:DisplayModeであればかなり簡略化して書くこともできる
ちなみにさっきの動作はこんな書き方でも実現できて、
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce010.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce010.png)
この式でもどれか項目を1つ入力すればボタンが活性化する。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce011.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce012.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce011.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce012.png)
これは各コントロールのDisplayModeプロパティが文字列「disabled」や「view」以外の時は活性化するという(風に見える)仕様のため。
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce013.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce013.png)
※空文字でも活性化する
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce014.png)
![](https://ippu-biz.com/wp-content/uploads/2022/12/coalesce014.png)
DisplayModeの仕様が絶対変わらない!とは言えないけど、こんな書き方もできるよって紹介でした。
コメント