PowerAutomateを利用して作成したワークフローを運用している中で遭遇した問題です。
Problem
PowerAutomateでとあるSharePointリストの項目を取得しようとしている。
取得したい項目は リストの中でもとある列の値が最大のもの(降順ソートした結果の最初の1件)。
当該リストの 項目数は5,000件を超え ている。
SharePointコネクターの「複数の項目の取得」でオペレーションを実行するとエラーになる:
{
"status": 400,
"message": "The attempted operation is prohibited because it exceeds the list view threshold.\r\nclientRequestId: d2146f4e-18fa-4746-8a17-8057094839ac\r\nserviceRequestId: 131b69a1-d0e0-4000-2419-b8eea3b714a1"
}
オペレーションが禁止されている。リストビューのしきい値を超えたから。
Solution
当該の列にインデックスを追加する。
バックエンドで起きている問題は先日の投稿「SharePointリストに存在するはずの項目がPowerAutomateで取得できない」で報告した問題と同じ模様。
ただし今回は「音もなく発生していた」ものではなく明確なエラーになってくれた。
最終的に取得したい項目はたった1件でもリスト項目のソートが必要。このためリストの項目の件数増加に伴って問題が生じる。
このリスト内のアイテム数がリスト ビューのしきい値 (5000 アイテム) を超えています。サーバーに過度な負荷がかかる原因となるタスク (リストの全アイテムを対象としたタスクなど) は、現在禁止されています。
大きなリストやライブラリを使用して、アイテムを即座に表示する方法を説明します。
対策方法も同様。リストの設定で当該リストの当該列に対してインデックスを追加する: