PowerAutomateを利用して作成したワークフローを運用している中で遭遇した問題です。
Problem
SharePointリストに存在するはずの項目(レコード)が、PowerAutomateで取得できない。
正確に言うと、取得できる項目とできない項目がある。
リストの項目数は6,000件を超えている。
SharePointコネクターの「複数の項目を取得」アクションを使用し、フィルタークエリで列の値を指定して対象の項目を絞り込む。
すると同じ列に対する条件値であっても、値次第で対象の項目が取得できるケースとできないケースが生じる:
PowerAutomateでは取得できない項目であるが、SharePointの画面はもちろん、PowerAppsからもアクセスできる。
リストの設定画面を見ると、以下のようにやや気になるメッセージが表示されているが・・・
このリスト内のアイテム数がリスト ビューのしきい値 (5000 アイテム) を超えています。サーバーに過度な負荷がかかる原因となるタスク (リストの全アイテムを対象としたタスクなど) は、現在禁止されています。
フィルタークエリがこの「禁止」に該当するのか・・・ ただこれが仮に該当するとしても、5000件という制限は、リストで管理しているデータの性質上容易には受け入れられない。
Solution
当該SharePointリストの項目の検索に利用する列(カラム)にインデックスを付加する。
リストの設定画面の前述の警告の下にある「大きなリストやライブラリを使用して、アイテムを即座に表示する方法を説明します。」というリンクをクリックすると表示される「SharePointのヘルプ」のアドバイスにしたがって、フィルタ条件に使用する列(カラム)に対してインデックスを追加してみる:
さいわいにも今回の問題はこれで解決。
前述の「SharePointのヘルプ」は英語ですが、公式リファレンスの1ページ「大規模なリストとライブラリを管理する」として日本語化もされています。
いずれにせよ、説明を読む限り、閾値を超えた項目数のリストを操作したときに起こりうる事象はエラーということですが・・・実際には「エラー」として問題が顕在化せず、「なぜか項目が取得できない」という問題も起こり得るようです。
また今回事象が確認されたリストの項目数は事象検知時点で6,000件を超えていますが、資料にある5,000件の閾値を超えたのはかなり以前のことであり、事象発生のタイミングとは一致しません。