IT Hands-on Lab

小規模組織向けIT環境の構築・運用に役立つ情報を、ハンズオン形式で紹介しています。

【Power Automate】SharePointサイト ストレージ使用量計測2

Power Automate SharePointサイト ストレージ使用量計測2

前の記事でPower AutomateでSharePoint REST APIを使用し、SharePointの各サイトのストレージ使用量を計測する例を紹介しました。
今回はMicrosoft Graph REST APIを使った場合等、参考情報をいくつか紹介します。
  • 操作環境
    • OS:Windows 11
    • Webブラウザー:Edge
  • 使用プラン:Microsoft 365 Business Premium(*)
    *Power Automateでプレミアムコネクタを使用する場合は、追加料金が必要となります

 

 

Power Automateによる計測フロー実装(Microsoft Graph REST API)

使用APIの要件とアプリ登録

前の記事ではSharePoint REST APIを使用しましたが、今回はMicrosoft Graph REST APIを使用します。

 

今回使用するMicrosoft Graph REST APIに関する公式記事の情報を掲載します。

図表7-1 Microsoft Graph REST APIに関する公式記事

図表7-1 Microsoft Graph REST APIに関する公式記事

 

なお、サイト一覧検索の方のアクセス許可について、アプリケーションの方の設定を行わないと動作しませんでした。設定箇所は図表7-2で紹介します。

 

Power AutomateでこれらのAPIを使用したフローを作成する前に、Microsoft Entra管理センターでこれらのAPIを使用するためのアプリ登録が必要となります。手順は以前の記事を参考にしてください。ただし、アクセス許可の設定が以前の記事とは若干異なりますので(図表7-1の公式記事のアクセス許可要件の通り)、その設定画面だけ以下に示します。

図表7-2 APIのアクセス許可設定

図表7-2 APIのアクセス許可設定

 

フロー作成と全体の処理

前の記事の工程4で紹介したSharePoint REST APIを使用したフローと同じように、日次のスケジュールフローを作成します。

図表7-3 PowerAutomate スケジュールフロー作成

図表7-3 PowerAutomate スケジュールフロー作成

 

全体の処理はSharePoint REST APIを使用したフローと概ね同じです。主な違いは、API実行前にアクセストークンを取得する点と、API実行時のコネクタがHTTPコネクタになる点です。

  • 日本時間の取得や必要な変数の初期化
  • アクセストークンの取得
  • サイト一覧情報の取得
  • 本日データ削除(Office Script実行)
  • 各サイトの詳細情報取得
  • 詳細情報取得の成功時は、記録用Excelに計測結果を行追加(*)
    *詳細情報取得時にエラーが発生する場合があるため、エラーをスルーする処理を入れています。Microsoft Graph REST APIは成功/失敗時ともにステータスコードを受け取れるため、これによりエラー判定しています

図表7-4 PowerAutomate フロー全体の処理

図表7-4 PowerAutomate フロー全体の処理

 

各ステップの設定

  • タイムゾーンの変換(組み込み>日次>タイムゾーンの変換):現時点日時(世界標準時)を日本時間に変換
  • 変数を初期化する-storage(組み込み>変数>変数を初期化する):ストレージ使用量(バイト単位)をギガバイト単位に変換した結果を格納する変数
  • 変数を初期化する-storage-percentage-used(組み込み>変数>変数を初期化する):ストレージ使用率を算出した結果を格納する変数

図表7-5 各ステップの設定(タイムゾーン,変数初期化)

図表7-5 各ステップの設定(タイムゾーン,変数初期化)

 

  • HTTP-アクセストークン(プレミアム>HTTP>HTTP):Microsoft Graph REST APIのアプリ登録時の情報を使用し、アクセストークンを取得する

参考まで、ここで使用したアクセストークン取得に関する公式記事の抜粋も掲載します。また、このアクセストークン取得を含むMicrosoft Graph REST APIの使用例は以前の記事でも紹介していますので、よろしければ参考にしてください。

図表7-6 各ステップの設定(HTTPトークン)

図表7-6 各ステップの設定(HTTPトークン)

 

  • JSONの解析-アクセストークン(組み込み>データ>JSON の解析): [HTTP-アクセストークン]の結果を指定(*)
    *Schemaの設定要領は前の記事の工程4の[JSONの解析-サイト一覧]アクションや[JSONの解析-サイト詳細]と同じです

一旦フローを保存・テスト実行し、API(HTTP-アクセストークン)実行結果をコピーし、[サンプルペイロードを使用してスキーマを生成する]のフォームにペーストします

図表7-7 各ステップの設定(JSON解析トークン,HTTPサイト一覧)

図表7-7 各ステップの設定(JSON解析トークン,HTTPサイト一覧)

 

  • JSONの解析-アクセストークン(組み込み>データ>JSON の解析): [HTTP-サイト一覧]の結果を指定(*)
    *Schemaの設定要領は図表7-7の説明内の注記の通りなので割愛します
  • スクリプトの実行(標準>Excel Online(Business)>スクリプトの実行):前の記事の工程3で用意したOffice Scriptを実行する

図表7-8 各ステップの設定(JSON解析サイト一覧,スクリプト実行)

図表7-8 各ステップの設定(JSON解析サイト一覧,スクリプト実行)

 

  • Apply to each(組み込み>コントロール>それぞれに適用する):[JSONの解析-サイト一覧]のBody valueを選択することで、取得したサイト一覧の各サイトに対するアクションとする

以降はApply to each内にアクションを追加します。

  • HTTP-サイト詳細(プレミアム>HTTP>HTTP):指定したURIのサイトに対し、使用量を取得する

図表7-9 各ステップの設定(Apply to each,HTTPサイト詳細)

図表7-9 各ステップの設定(Apply to each,HTTPサイト詳細)

 

  • 条件(組み込み>コントロール>条件):[パラメーター]はサイト詳細情報の取得が正常終了(ステータスコードが200)したか否か、[設定]は一つ前のアクションが成功または失敗のとき(*)
    *サイト詳細情報取得時にエラーが発生することがあり、エラーをスルーして条件分岐の処理を実行できるよう設定しています

図表7-10 各ステップの設定(条件)

図表7-10 各ステップの設定(条件)

 

以降は条件分岐のtrue(はい)の方にアクションを追加します。

  • JSONの解析-サイト詳細(組み込み>データ>JSON の解析): [HTTP-サイト詳細]の結果を指定(*)
    *Schemaの設定要領は図表7-7の説明内の注記の通りなので割愛します
  • 変数の設定-storage(組み込み>変数>変数の設定):サイト詳細から取得したストレージ使用量がバイト単位のため、関数でギガバイト単位に変換して変数に格納する
    *[JSONの解析-サイト詳細]のアクション名に半角スペースが含まれていると正常に動作しませんのでご注意ください

図表7-11 各ステップの設定(JSON解析サイト詳細,変数設定)

図表7-11 各ステップの設定(JSON解析サイト詳細,変数設定)

 

  • 変数の設定-storage-percentage-used(組み込み>変数>変数の設定):サイト詳細から取得したストレージ使用量と容量を使い、使用率を算出して変数に格納する
    *[JSONの解析-サイト詳細]のアクション名に半角スペースが含まれていると正常に動作しませんのでご注意ください
  • 表に行を追加(標準>Excel Online(Business)>表に行を追加):記録用Excelに一行追加し、サイトの使用量等の情報を書き込む

図表7-12 各ステップの設定(変数設定,Excel表に行追加)

図表7-12 各ステップの設定(変数設定,Excel表に行追加)

 

2種類のAPIによる計測結果比較

この記事で作成したフロー(Microsoft Graph REST API版)と前の記事で作成したフロー(SharePoint REST API版)を実行し、記録用Excelのデータを比較したところ、結果に差がありました。
出力されたサイトについて、Microsoft Graph REST API版はSharePoint管理センターのサイト一覧と同じ結果でした。SharePoint REST API版は実行ユーザーがサイトのメンバーか否かの影響を受けるようです。また、使用量(GB)も差がありましたが、小数第四位以下のため、誤差の範囲と捉えて良いでしょう。

*画面イメージはデータの比較をしやすいよう、同日データでフィルタし、サイト名を昇順にしています

図表7-13 2種類のAPIの計測結果比較

図表7-13 2種類のAPIの計測結果比較

 

グラフ出力(Power BIグラフ)

グラフ出力について、前の記事ではSharePointサイト上の記録用Excelにピボットグラフを用意する例を紹介しました。この記事では、このExcelをPower BIで参照してグラフ出力する例を紹介します(SharePoint上のExcelをデータソースとして使う場合の設定方法の紹介が主目的です)。

 

SharePoint上の記録用Excelにアクセスできるユーザーで[Power BI Desktop]を起動します。ホーム画面の[他のソースからデータを取得する]を選択します。

図表8-1 Power BI データソース選択

図表8-1 Power BI データソース選択

 

[データを取得]画面で[SharePoint フォルダー]を選択し、[接続]を選択します。
Webブラウザーにて記録用Excelを格納しているSharePointサイトにアクセスし、URLをコピーします。

図表8-2 Power BI SharePointフォルダー選択

図表8-2 Power BI SharePointフォルダー選択

 

[サイトURL]欄に図表8-2でコピーしたURLをペーストし、[OK]を選択します。
サイト内のファイル一覧が表示されたら、[データの変換]を選択します。

図表8-3 Power BI サイト選択,データ変換

図表8-3 Power BI サイト選択,データ変換

 

ファイル一覧が表示されたら、グラフ化したい記録用Excelの行の[Binary]リンクを選択します。
Excel内シート・テーブルの一覧が表示されたら、グラフ化したい記録用Excelのテーブル行の[Table]リンクを選択します。
SharePoint上のデータを読み込むのが初めてだったり久し振りだったりすると、この辺りの手順が少々分かり辛く戸惑うかもしれません。

図表8-4 Power BI ファイルとテーブルの選択

図表8-4 Power BI ファイルとテーブルの選択

 

使用したいデータが表示されたら、[閉じて適用]を選択します。

図表8-5 Power BI データソース確定

図表8-5 Power BI データソース確定

 

Power BIの操作説明は割愛しますが、画面イメージのようなグラフであれば、この画面上で簡単に作成できます。

図表8-6 Power BI 時系列グラフ

図表8-6 Power BI 時系列グラフ

 

この画面イメージは、図表8-6のグラフのシートを複製して、折れ線グラフをクロス集計表に変更したものです。
なお、時系列項目として使用している「日付(ビン)」は、日付をグループ化した項目です。日付を扱う際によく使う方法なので、設定画面を掲載しておきます。

図表8-7 Power BI 日付項目のグループ化

図表8-7 Power BI 日付項目のグループ化

 

PowerShellによる使用量確認

最後に、PowerShellでSharePointサイトのストレージ使用量を確認する方法を紹介します。

SharePoint PowerShellの初回使用設定

PowerShellを管理者で起動し、以下コマンドにより、モジュールをインストールします。

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

図表9-1 PowerShell 起動,モジュールインストール

図表9-1 PowerShell 起動,モジュールインストール

 

図表9-1のインストール時にモジュールのインポートも行われる筈ですが、後続のコマンド実行時にエラーが出る場合は、以下コマンドにより、モジュールのインポートを行います。

Import-Module -Name Microsoft.Online.SharePoint.PowerShell

以下コマンドにより、モジュールがインストール・インポート済か確認します。

Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version

図表9-2 PowerShell モジュールインポート

図表9-2 PowerShell モジュールインポート

 

SharePoint管理サイトへの接続・切断

この例では多要素認証を使用して接続します。
以下コマンドにより、組織テナントのSharePoint管理サイトに接続します。

Connect-SPOService -Url https://{組織ドメイン名}-admin.sharepoint.com

組織テナントへのサインインを求められたら、SharePointの管理者権限を持つユーザーでサインインします。

図表9-3 PowerShell SharePoint接続,サインイン

図表9-3 PowerShell SharePoint接続,サインイン

 

組織テナントのSharePoint管理サイトから切断するには、以下コマンドを実行します。

Disconnect-SPOService

図表9-4 PowerShell SharePoint切断

図表9-4 PowerShell SharePoint切断

 

SharePointサイトの使用量確認

組織テナントのSharePoint管理サイトに接続した状態(二つ前の画面イメージ)で、以下コマンドを実行します。

Get-SPOSite -Detailed | Select-Object Url, StorageUsageCurrent, StorageQuota
*結果のStorageUsageCurrentがストレージ使用量、StorageQuotaがそのサイトのストレージ容量(格納できる最大量)で、どちらもMB単位です

図表9-5 PowerShell SharePointサイト使用量確認

図表9-5 PowerShell SharePointサイト使用量確認

 

おわりに

SharePoint管理センターで各サイトのストレージ使用量を確認できます。しかし、その時点のデータしかなく、どのサイトで増減が顕著に発生しているのか、時系列での把握が困難です。SharePointを長く運用していると、ストレージの空き容量不足と費用増大の懸念が出てきますので、その対策として今回の記事を紹介しました。

 

Microsoft 365 Business Premiumを導入済の組織であれば、Power AutomateでSharePoint REST APIを使用することで、追加料金なしで実現できます(Microsoft Graph REST APIを使用する場合は追加料金が必要です)。ストレージ容量不足の懸念があり、その対策に費用をかけたくない場合、この記事を参考にしていただけたら幸いです。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

 

当ブログ内の関連記事

elmgrn.hatenablog.com