「データ行の制限」と「ギャラリーの遅延読み込み機能」があるため、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
すると、ギャラリーが最後のアイテムを選択しようとして勝手にスクロールバーを動かしてくれるので、少し待つと全データの件数が表示される。
ただこの状態だとユーザービリティがいまいちなので、ギャラリーの中のコントロールを全て消して、
ギャラリー自体を非表示にしちゃえば見た目もよし。
※これでもスクロールバーを勝手に動かしてくれる。
※これでもスクロールバーを勝手に動かしてくれる。
とは言え「全データ取得がいつ終わるか」わからないので、この件数を変数とかに入れるのは少し難しい。
※タイマーとかで待つ、って方法もあるけど、全件取得までにどのくらい時間がかかるかわからないので、ちょっと微妙な気がする。。。
ただ「ひとまず全件数を表示したい」っていうお願いもよくあるので、どこかでこの方法が使えそう。