ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

Power Automate を使ってテナント内のすべてのSharePointサイトの容量をCSVに保存する

Power Automate を使ってテナント内のすべてのSharePointサイトの容量を取得します。

フローをGitHubで公開しました。
github.com

フローについての説明

フローの概要

このフローは、テナント内のすべてのSharePointサイトの容量を取得するためのフローです。

フローの使用イメージ

フローのトリガーは手動実行です。フロー一覧でこのフローの「再生」ボタンをクリックします。

メニューが開いたら「フローの実行」をクリックします。

フローが完了したことがチャットによって通知されます。

チャットを開いて、「CSVを開く」リンクをクリックします。

フローによって保存されたCSVExcel Onlineで表示されます。

CSVはどこに保存される?

フローを実行したユーザーのOneDriveに保存されます。OneDriveのルートフォルダに「すべてのサイトの容量」というフォルダが作成され、その直下にCSVが保存されます。

フロー図

フローの全体は下図の通りです。

フローの特徴

このフローは、テナント内の各サイトにアクセスして容量を取得してはいません。このフローは、SharePoint管理センターにある「DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS」リストにあるアイテムを取得しています。

「DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS」とは何か?

このリストはSharePoint管理センターにあるリストです。

下記のとおり、SharePoint管理センターのURL末尾に「_layouts/15/viewlsts.aspx」をつけてアクセスすると、SharePoint管理センターにあるリスト一覧が表示されます。
https://(テナント名)-admin.sharepoint.com/_layouts/15/viewlsts.aspx

リスト一覧にでてくるリストが「DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS」リストです。このリストにはテナント内のSharePointサイトがリストアイテムとして一覧登録されています。また、それらのリストアイテムにはサイトの現在使用容量を含む各種情報が含まれています。

このリストは、このリンクをクリックしてもアクセスすることができません。GUIで表示する画面が用意されていないようです。

このリストはGUIではアクセスできませんが、APIでアクセスすることが可能です。そのため、このフローでは「SharePoint に HTTP 要求を送信します」アクションを使ってアクセスを行っています。

このリストを使ってサイトの現在使用容量を取得する方法はMicrosoftからサポートされているか?

サポーされていると明言されていないです。サポートに問い合わせを行ったところ、「このリストを使ってサイトの現在使用容量を取得できると判断できる」と検証ベースで認められました。ですが、サポートされる内容であるとは明言されていません。

そのため、使いどころには注意してください。ある日突然、この方法が使えなくなることも考慮したうえで使用を検討してください。

お問い合わせについて弊社環境にて検証したところ、お客様のご認識の通り、SharePoint サイトの容量と思われる値が取得できることを確認いたしました。

上記フローにて出力した "StorageUsed" の値と SharePoint 管理センターの "記憶域の使用量" の値を比較したところ、ほぼ同じ値であることを確認いたしました。

上記検証結果より、'DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS' の "StorageUsed" より、SharePoint サイトの容量を取得することができると認識しております。

今回は以上です。