はじめに
結構前にもPower Appsでのコレクションにインデックスを付与する方法をまとめていたのですが、いちいちコレクション作成しなくてもインデックス付与する方法が紹介されてなかったので簡単にまとめようと思います。
コレクションにインデックスを付与する
利用する関数は
の4つです。
インデックスが付与されたテーブルは上記4つの関数を活用して以下のように作成することができます。
Ungroup( With( {originCol: CustomGallerySample}, ForAll( Sequence(CountRows(originCol)), { index: ThisRecord.Value, _record: [Index(originCol, ThisRecord.Value)] } ) ), _record )
やってることとしては、
- With 関数を利用して、元となるテーブルを
originCol
に格納 originCol
のレコード数分だけ処理を行う(ForAll 関数とSequence 関数の利用)index
にインデックス(連番)情報を、_record
にもとテーブルのN番目の情報を設定。ただし、テーブルとして設定(理由は後述)- Ungroup 関数で
_record
のグループ化を解除
Ungroup 関数でグループ化を解除する際、対象のフィールドはテーブルである必要があります。
なのでレコードとしてではなくわざわざテーブルとして設定していたわけですね。
おわりに
これでわざわざコレクションに設定せずとも、例えばGalleryの Items
に直接インデックスが付与されたテーブルを設定することも可能になります。