GraphAPI経由でのOffice 365 レポートをFlowで取得する

第23回 Office 365 勉強会で発表した内容の続きです。発表した内容はこちら。

このブログエントリではFlowによる情報収集を説明します。

  • GraphAPI経由でのレポートが一番有用だが、レポート取得するのにひと手間かかる
  • Flowで取得する事で、日次データ取得が簡易になる

作業1. アプリケーション登録

Azure AD Portalからアプリケーションを登録し、GraphAPI経由でデータを取る準備をします。手順は割愛…。リファレンスの通り、レポートを取得する際はReports.Read.All権限でOKです。

作業2. Flowでの取得

本題。レポート取得のためのFlowを作成します。

1. GraphAPIにアクセス

URI欄に取得対象のGraphAPIのURLを入力します。FlowでHTTPリクエストアクションを追加し、Active Directory Oauthを選択。作業1. で登録したアプリケーションの情報を登録します。

2. 戻り値の解析
  1. で指定したAPIの戻り値がJSON形式となるので解析します。スキーマはこちら。

{
“type": “object",
“properties": {
“Transfer-Encoding": {
“type": “string"
},
“request-id": {
“type": “string"
},
“client-request-id": {
“type": “string"
},
“x-ms-ags-diagnostic": {
“type": “string"
},
“Duratio": {
“type": “string"
},
“Strict-Transport-Security": {
“type": “string"
},
“Cache-Control": {
“type": “string"
},
“Date": {
“type": “string"
},
“Location": {
“type": “string"
},
“Content-Type": {
“type": “string"
},
“Content-Length": {
“type": “string"
}
}
}

自分で調べるときは、GraphAPIのリファレンスを見る、GraphExplorerから動かしてみる(一番かんたん、おすすめ)、ひとまずFlowでGraphAPIをたたいて戻り値を全部確認するなどの方法があります。

3. 実データにアクセス

戻り値内にあるLocationに実データへのアクセスURLが記載されているので、HTTPアクセスを行います。

4. Flow実行条件の修正

“OAuth認証してトークン取得”のHTTPステータスコードは302だが、Flowの仕様としてエラー扱いとなるので、エラーでも次のステップを実行するよう設定を変更します。

GraphAPIの仕様上、データへのアクセスを試み、認証が成功した場合、直接データはダウンロードできず、HTTPステータスコード302とともに“データがダウンロード可能な一時的なURL”が生成される。PowerShellやPostman、ブラウザは302に対応して自動的にリダイレクトされるが、Flowはしていないため、今回のような手順を作成している。

5. 動作確認

Flowで設定した定期的なスケジュールでユーザーデータのダウンロードが可能となりました。

参考にしたページ

Posted by tera