1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PowerAutomateでSPOのPV・UUを取得する

Posted at

PowerAutomateによるフロー作成をしていると、SharePointにも触れる機会が増えます。そしてその逆もまた然りです。
いずれもO365に統合され、PowerAutomateはMicrosoft社が展開するPowerPlatformを構成する製品として組織の業務効率化の基軸、SharePointはTeamsのチームと連動して作成されるチームサイトの機能を提供して組織のニュースやファイルの管理の基軸となるからです。

Problem

ところで、PowerAutomateで提供されているSharePoint系のアクションはいろいろありますが、SPOで構築されたサイトの利用状況(アクセス情報)を取得するためのアクションは今のところ提供されていません。

それでは以下のような情報を取得するにはどうしたらよいのでしょうか?

  • あるニュース(ページ)のPVやUU
  • あるニュースの「いいね」数やコメント数
  • あるサイト全体のPVやUU

Solution

"SharePointにHTTP要求を送信します" を利用して、SPOが公開するWebAPIから情報を取得します。
実のところ後述の「URI」の内容は、私自身、他の記事を参考にしつつトライ&エラーで行き着いたもので、「どうしてこうなる?」「過不足がないか?」という質問にはお答えすることができません・・・。

あるニュース(ページ)のPVやUU

まずニュースやページ個別のPV・UUの取得方法です。

image.png

  • 「サイトのアドレス」には情報収集対象のサイトを設定します。
  • 「方法」は「GET」です。
  • 「URI」には _api/search/query?querytext='path:https://www.example.com/path/to/site/SitePages (IsDocument:True OR contentclass:STS_ListItem)'&sortlist='ViewsRecent:descending'&selectproperties='Title,ViewsLast7Days,ViewsLast7DaysUniqueUsers,ViewsLastMonths1,ViewsLastMonths1Unique,ViewsLastMonths2,ViewsLastMonths2Unique,ViewsLastMonths3,ViewsLastMonths3Unique,ViewsLifetime,ViewsLifetimeUniqueUsers,Path'&RowLimit=1000&trimduplicates=false という要領でPV・UUを取得するためのクエリを記載します。
  • www.example.com/path/to/site の箇所は情報取得対象サイトのURLを指定してください。
  • 「ヘッダー」は Acceptapplication/json;odata=verbose を記入します。

ViewsLast7DaysViewsLast7DaysUniqueUsers という項目名には集計対象期間に応じて多くのバリエーションがあり、こちらのブログ記事 でそれらをまとめてくれています。
末尾に UniqueUniqueUsers が付く項目が期間ごとのUUで、それ以外が期間ごとのPVです。

あるニュースの「いいね」数やコメント数

続いて、ニュースやページ個別の「いいね」数やコメント数の取得方法です。

image.png

  • 「サイトのアドレス」や「方法」「ヘッダー」は先ほどと同じです。
  • 「URI」には 「いいね」数の場合 _api/web/lists/GetByTitle('サイトのページ')/items(id)/likedBy?$inlineCount=AllPages を指定します。
  • コメント数の場合は _api/web/lists/GetByTitle('サイトのページ')/items(id)/Comments?$expand=replies,likedBy,replies/likedBy&$inlineCount=AllPages を指定します。
  • いずれの場合も id には "複数の項目の取得" アクションで取得できるページのIDを指定します。

あるサイト全体のPVやUU

最後に、あるサイト全体のPVやUU(サイト単位のPVやUU)の取得方法です。

image.png

  • 「サイトのアドレス」や「方法」「ヘッダー」は先ほどと同じです。
  • 「URI」には _api/v2.1/sites/siteId/oneDrive.getActivitiesByInterval?startDateTime=dateTimeA&endDateTime=dateTimeB&interval=day を指定します。
  • dateTimeAdateTimeB にはISO8601形式(例: 2021-11-15T03:00:34.1163617Z )で取得対象期間の日時を指定します。
  • interval には hourweekmonth も指定できるようです。
  • siteId には取得対象サイトのIDを指定します。サイトのIDはこちらの記事で解説してくれているように3つの文字列をカンマで連結したかたちになっています。例えば exmaple.sharepoint.com,07a6be8b-aaaa-bbbb-cccc-0411a6d6ab61,152d6fdc-aaaa-bbbb-cccc-c2b941d2f797 というように。
  • 対象サイトのIDを知るために私が採った方法は、「サイトの利用状況」ページをブラウザで開き、そのページの表示時に行われているAjaxリクエストの宛先URLを確認するという方法でした。泥臭すぎて恥ずかしい。。

image.png

WebAPIから返されるJSONの中で actionCount がPV、 actorCount がUUです。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?