Power Apps 2000件より多いSharePointリストの「アイテム数」をキャンバスで取得する

「データ行の制限」と「ギャラリーの遅延読み込み機能」があるため、SharePointリストの件数をキャンバスだけで取得するのは難しかったけど、この解決策としておもしろい方法が紹介されていたのでメモ。

スポンサーリンク

やりたいこと

2000件より多いアイテムがあるSPOリストに対して、キャンバス側でアイテム数を取ろうとすると、
GalleryのAllItemsCountを使用しても遅延読み込み機能のため初期表示だと100しか取れなくて、
CountRows関数を使っても委任ができないため、データ行の制限数(例では2000)しかアイテム数を取れなかった。

あとはPower Automateを使えば(確か)5000件までアイテム数を取得することはできたけど、リストのアイテム数取得のためだけにフローを呼び出すのもいまいち。。。とは思っていた。

今回紹介されている方法

この問題の解決方法をこちらの記事が紹介してくれていて、簡潔に言うと「ギャラリーのスクロールを動かしちゃう」方法。
Consumer Privacy Act (CCPA) Opt-Out Icon
まずギャラリーのAllItemsCountをラベルとかに表示して、
ギャラリーのDefaultプロパティに以下の式を入れるだけ。

Last(【ギャラリー名】.AllItems)

Last(Self.AllItems)  //こちらでもOK

すると、ギャラリーが最後のアイテムを選択しようとして勝手にスクロールバーを動かしてくれるので、少し待つと全データの件数が表示される。

ただこの状態だとユーザービリティがいまいちなので、ギャラリーの中のコントロールを全て消して、
ギャラリー自体を非表示にしちゃえば見た目もよし。
※これでもスクロールバーを勝手に動かしてくれる。

とは言え「全データ取得がいつ終わるか」わからないので、この件数を変数とかに入れるのは少し難しい。
※タイマーとかで待つ、って方法もあるけど、全件取得までにどのくらい時間がかかるかわからないので、ちょっと微妙な気がする。。。

ただ「ひとまず全件数を表示したい」っていうお願いもよくあるので、どこかでこの方法が使えそう。

関連リンク

タイトルとURLをコピーしました