Power Appsで「ユーザーまたはグループ」列がたくさんあるSharePointリストを扱った際、エラー
「ネットワークからのデータ取得でエラーが発生しました: 含まれているルックアップ列の数がルックアップ列のしきい値を超えているため、クエリを完了できません。」
が発生したので、詳しく調べてみた。
SharePointリストのビューに一度に表示できる参照列は12個まで
これまで全く知らなかったけど、SPOリストのビューに同時に表示できる参照型の列(ユーザーまたはグループ列含む)は12個までらしい。
参照列の追加自体は12個を超えてもできるけど、一度にビューに表示しようとするとエラーが発生する。
Power Appsでは参照列が12個までのリストしか扱えない
そんなSharePoint側の制限によって、Power Appsでも参照列が最大12個までのSPOリストしか扱えない。
この12という数字には、既定で追加される「登録者」と「更新者」も含まれるため、実質Power Apps側で使用するSPOリストに追加できる参照リストは10個までということになる。
今回はこの挙動について詳しく調べてみた。
事前準備:SharePointリストの準備
まずはユーザーまたはグループ列を10個追加したSPOリストを作成。
※登録者と更新者を含めると合計12個の参照列
※登録者と更新者を含めると合計12個の参照列
このリストをPower Apps側に繋いで、事前準備完了。
この時点では問題なくリストの操作は可能。
SharePointリストに13個目の参照列を追加
ここでSPOリストに11個目の参照列を追加してみる。
するとビューには12個までしか表示できないので、エラー発生。
そこで「登録者」と「更新者」を非表示にするとSPOリスト側には問題なく表示される。
Power Apps側で13個の参照列を持つSPOリストを使う
アプリ側でSPOリストを最新に更新すると、
ギャラリーにユーザー名が表示されなくなり、既に裏側でエラーが起きていることがわかる。この状態でSubmitFormをしてみると、
Patch関数のエラーが発生する。
詳しいエラーを見てみると、「含まれているルックアップ列の数がルックアップ列のしきい値を超えているため、クエリを完了できません。」と返ってきている。
ちなみにUpdateContextで変数に入れようとすると、エラー表示は表示されず、こっそりとNetworkエラーである旨が変数ビューに表示される。
対策(回避策)
SharePoint側の要件のため、正直Power Apps側で対策するのは難しい。
ShowColumnsで取得する列を絞っても同じエラーが出る。
※そもそもShowColumnsは委任不可だから当たり前かもだけど
※そもそもShowColumnsは委任不可だから当たり前かもだけど
ということで対策(回避策)としては、参照列は可能な限り使用せず、一意の値(ユーザーまたはグループ列であればメールアドレスとか)を文字列とかで保存しておくしかないかなと。。
おまけ:ただし追加自体はできている
ただ、後から気づいたんだけど、どうもSPOリストへの追加自体は成功しているよう。
なので、操作はできるけど取得(表示)はできない、っていうのが正しい理解なのかなと。
いずれにしろエラーは出てしまうので、参照列は多用しない方がよさそう。