2022.06.06PowerApps│SharePointリスト5000件問題を解決する2つの方法ツイートこんにちは、あんこ先生です。SharePointリスト、アイテムが5000件を超えると正常に動作しなくなります。サーバーに過度な負荷がかかることを回避するための防衛機能だからです。そのため、アイテムが5000件を超えないように制御しないといけません。いえ、どうしても5000件に収まらないこともありますよね。そこで、今回は「5000件超えても大丈夫」と「5000件超えないよう自動でアイテム削除」の方法を紹介します。この記事を読めば、もう5000件問題は怖くない。SharePointリスト5000件問題を解決する2つの方法いつかは必ず立ちはだかる、リスト5000件問題に悩まれていませんか?リスト5000件問題とはSharePointリストのアイテムが5,000件を超えると、しきい値エラーが発生することがあります。このしきい値エラーが発生すると、そのリストの参照が一切されません。これは委任できるFilter関数などを用いても回避できない曲者です。ある日を境にギャラリーの中身が表示されたり表示されなくなったりする症状が現れます。だましだまし使い続けると、完全に表示されなくなります。この問題を解決する方法は2つありますので、それを紹介していきます。SharePointリストにインデックス列を作成するインデックスについてひとつめは、5000件を超えても動作するようインデックス列を追加する方法です。いわゆる対処療法です。データそのものには手を加えず、委任できるFilter関数などを機能させる列に作り替えます。インデックスを付与しても、委任レコード上限500件は変わりません。インデックスは最大20まで追加できますが、よく使う項目1つあれば事足りると思います。いわゆる主キーとなる列を指定するのが効果的ですね。種類として、単純インデックスと複合インデックスがありますが、特に気にしなくてよいです。インデックスの型インデックスに設定できる列の種類(データ型)は決まっています。あるのでPowerAppsに関係あるところをピックアップしています。サポートされている列の種類は次の通りです。(複数値)、集計値は設定できないので注意してください。作り方は至ってかんたんです。SharePointのサイトコンテンツに移動します。次にインデックスを付与したいリスト横の3点リーダから設定を押します。するとリストの列一覧が表示されるので、最下段のインデックス付きの列を選びます。インデックスは最大20個まで設定できます。新規で設定するには、新しいインデックスの作成を押します。インデックスを付与したい列を選びます。インデックス列の作成は以上です。この列をキーにフィルターをかければアプリも正常に稼働します。SharePointリストのアイテムを削除するふたつめは、5000件を超えないよう一定期間経過したアイテムを削除する方法です。こちらは原因療法になります。1年経過したアイテムを削除して、常に5000件以下に抑えることができればこの問題は起きません。アプリのパフォーマンスにも直結するので、不要なアイテムは随時整理したいですね。いえ、手動で削除すると誤って別のアイテムを消したり、消すことを忘れることがあります。そのため、自動削除させた方が無難で効率的です。自動削除する方法は次の2種類があります。情報管理ポリシーでアイテムを自動削除する│SharePointひとつめは、SharePointの機能を使った自動削除です。アイテムを作成してから指定した期間を経過したものを削除していきます。実行タイミングは週1回になります。具体的にいつ行っているかはテナントによって異なるようです。従って、きっちり1年経過したら削除するといったことは行えません。確実としたい場合は、この後紹介するPowerAutomateを使った方法を採用してください。テスト環境では情報管理ポリシーが表示されないため、この方法は行えないかもしれません。情報管理ポリシーの設定方法インデックス付与と同様の手順で設定したいリストのリストの設定を開きます。その後、情報管理ポリシーからポリシーソースの変更を選びます。次に、ライブラリとフォルダーにチェックを入れ、保持ステージを追加するを押します。あとは削除させる条件を設定するだけです。設定が完了すれば次のように表示されます。あとは時期がくれば、該当するアイテムが自動で削除されます。フローでアイテムを自動削除する│PowerAutomateもうひとつの方法は、PowerAutomateでアイテムを削除させます。こちらの方が、より細かく、正確に削除が行えます。設定もそんなに難しくはありませんので、作ってみましょう。スケジュール済みフローの作成それでは、フローを作成していきます。TeamsやPADのほうではないので注意してください。ブラウザからPowerAutomateを開き、作成そしてスケジュール済みクラウドフローを押します。名前以外は後工程で変更するので作成を押します。今回のフローは3ステップです。順番に作っていきましょう。実行頻度の設定│トリガーまず開始トリガーですが、業務時間外の朝6時に実行させるよう設定します。間隔は1回、頻度は1日です。これで毎日実行されます。次にタイムゾーンですが、UTC+9の日本を選びます。Zを削除しておかないとUTC時刻で動かないないため、削除しておきます。設定時間を6にすれば完成です。プレビューに毎日の6:00に実行すると表示されていれば設定は完璧です。削除対象の抽出│複数の項目の取得つぎにSPOリストの抽出です。サイトのアドレスとリスト名を入力します。選択式なので悩まないと思います。その後、詳細オプションを表示し、クエリフィルターに次を記述します。'@{addDays(utcNow(),-7)}'Createdは登録日、ltはより小さい、関数部分は本日から7日前の日付を返します。この記述で、直近1週間を含まないそれ以前のデータを抽出します。図解すると次の通りで、オレンジ部分以前が削除対象になります。クエリフィルターに関数を利用する場合、その両端をシングルコーテーションで囲まないとエラーになります。項目の削除でサイトのアドレスとリスト名を入力します。ここも選択肢から先ほどと同じ内容を選択します。IDは複数の項目の取得で得たIDを指定します。eachができあがり、抽出したデータの数だけ処理が繰り返されます。これで、先ほど抽出したデータがすべて削除対象となります。日付や条件を変えることで様々な削除の自動化が行えますよ。他のSPOリストも削除したい場合は、下につなげていけばひとつのフローとして処理できます。SharePointリスト5000件問題を解決する2つの方法のまとめ今回はStartsWith関数で電話帳マルチページをかんたんに作る方法を紹介しました。今回PowerAppsの出番がありませんでしたが、アプリでアイテムを登録する際、古いものを削除させるのも手です。SPOリストは削除する量が多いとレスポンスが低下するので少量に限ります。削除量が多い場合は、だれも利用していない時間帯に自動で削除する仕組みを構築した方が効率的です。このフローはひとつ作っておくと使いまわしできるのでおススメですよ。Teamsの使い方はコチラ。Teamsの使い方1テーブルの新規作成2022.06.15PowerApps│チェックリストアプリを少し使いやすくする方法2022.09.15PowerApps│フォームを使ったチェックリストアプリの作り方2022.09.11PowerApps│領収書を発行してメール送付するアプリの作り方2022.08.30PowerApps│アクセス権のないプランにタスクをまとめて登録する方法2022.07.09ご支援よろしくおねがいしますこの記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。メッセージもいただけるとたいへん喜びます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ΔPowerApps│With関数でコードを読みやすく省力化する方法PowerApps│StartsWith関数で電話帳マルチページをかんたんに作る方法RECOMMEND関連記事は見つかりませんでした。US七草あんこ非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。Twitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。