MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

SharePoint Online の Page Analytics を Power Automate から取得する

Page Analytics??

SharePoint onlineのページを表示すると出てくる「Analytics」というボタン、これをクリックするとページのアクセス解析グラフが表示されます。これとても綺麗で見やすいのですが、ページを横断してアクセス解析を自動取得したいという要望があったので、調べてみました。

SharePoint REST API の利用

Power Automate にこのアクセス解析を取得するアクションがなかったので、毎度のことながらREST APIを利用します。

今回利用するUriは以下のものです。

_api/v2.1/sites/{site ID}/lists/{list ID}/items/{item ID}/oneDrive.getAggregatedAnalytics?startDateTime=2021-05-19T05:12:17.643Z&endDateTime=2021-08-16T05:12:17.643Z&$expand=accessStatsByDay($expand=lastSevenDays,lastThirtyDays,lastNinetyDays,allTime,itemActivityStats)&select=*

長いですが、sites/{site ID}/lists/{list ID}/items/{item ID}/で特定されるアイテム (この場合はページ) に対して、startDateTimeendDateTimeで決まる期間のアクセス数を返します。

{site ID}だけちょっと調べにくいですが、Graph API Explorerで取得可能です。詳細は以下のブログを見てみてください。

Microsoft Graph APIでSharepointのサイトIDを調べる方法 - Qiita

レスポンスとしては以下のようなJSONが得られます。

ページごとにこのようなJSONが得られるので、あとは必要なだけのページ全部を Apply to eachでループして結果をCSVに出力すれば完了です。

※もし時間ごとのアクセスグラフを取得したいとなった場合 (この場合はCSVに出力するとしてもページ単位になりますが)には、

_api/v2.1/sites/{site ID}/lists/{list ID}/items/{item ID}/oneDrive.getAggregatedAnalytics?startDateTime=2021-05-19T06:48:52.365Z&endDateTime=2021-08-16T06:48:52.365Z&$expand=accessStatsByHour&select=*

を利用すると1時間ごとのPVが取れます。