Power Appsの使い方

Power AppsとPower Automateの使い方やできることがわかるブログを目指しています。

Power Apps コレクションにインデックスのフィールドを追加する

以下のようにするとコレクションにインデックスのフィールドを追加することができます。

 

コレクションにインデックスを追加する

 

// 大本のコレクション

ClearCollect (colItems,{ID:101},{ID:102},{ID:103},{ID:104},{ID:105});

// インデックスを含めるコレクションを初期化

Clear (colItems_Indexed);

// ForAll() + Collect() でインデックス付きコレクションを作成。

ForAll(

    colItems,

    Collect(

        colItems_Indexed,

        // Patch() でレコードを連結。インデックスを追加。

        Patch(

            Last (FirstN (colItemsCountRows (colItems_Indexed) + 1)), 

            { Index : CountRows (colItems_Indexed) + 1 }

        )

    )

);

 

という感じでできます。と昔OneNoteまとめていたんですが、少し前に Sequence() 関数と As 演算子が追加されたことでもっといい感じに書けるようになりました。

 

新バージョンは以下の通りです。(ForAllの部分のみ

 

コレクションにインデックスを追加する:新バージョン

 

ForAll(

    Sequence(CountRows(colItems)) As Index,

    Collect(

        colItems_Indexed,

        Patch(

            Last(FirstN(colItems,Index.Value)),

            { Index : Index.Value }

        )

    )

)

 

Sequence() 関数について

Sequence() 関数は1始まりの連番の単一列テーブルを生成する関数です。今回の例でいうと[1,2,3,4,5]が生成される感じです。動的に連番テーブルを生成できるので、これを使うとPower Apps でできることの幅が広がると思います。意外と欲しかった関数。

 

As 演算子について

As 演算子はテーブルに命名する演算子です。今回の例でいうと、Sequence()で生成したものに Index 命名して参照できるようにしています。うまく使ってコードの可読性を向上させたいですね。

 

Patchによるレコードのマージ

Patch()関数は多くの場合レコードの登録、更新に使用しますが、もう一つ機能を持っていて、レコードのマージを行うことができます。今回はその機能を使っています。

 

参考URL

Adding an index column to a collection

https://powerusers.microsoft.com/t5/Building-Power-Apps/Adding-an-index-column-to-a-collection/m-p/394955#M115389

 

Formulas: ThisRecord, As, and Sequence

https://powerapps.microsoft.com/en-us/blog/formulas-thisrecord-as-and-sequence/

 

Patch()関数について

https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-patch

Power Apps や Power Automate に関する仕事のご依頼は下記ページからお問い合わせください。
ZEE CitizenDevSupport