このブログやQiitaのほうにもGoogle Analyticsを設定していて、どのページがどれくらい見られているかを時々確認しているのですが、どうせなら定期的に簡易なレポートを自分のよく見る場所に送りたいなと思ったのがきっかけです。
Google Analytics には Reporting API が用意されており、これを実行することでHTTPで任意のクエリを実行しデータを取得することができます。
今回は Google Analytics の簡易レポートを自動作成するために Power Automate で Reporting API を実行して結果を Teams に送信してみたので、その手順を残しておきます。
Query Explorer
Reporting API のクエリを構成する際には Query Explorer でお試し実行してみるのが良いです。
Query Explorer — Google Analytics Demos & Tools
Google Analytics を設定しているサイトの一覧が表示されてそこから対象を選択し、メトリックやメジャーを指定するとデータと実行したクエリを返してくれます。
単純に過去7日間のPVをとりたい場合には
https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3AXXXXXXXX&start-date=7daysAgo&end-date=yesterday&metrics=ga%3Apageviews&dimensions=ga%3Adate
こんなURLにGETリクエストをおくることになります。
なおクエリパラメータの詳細については以下に細かく書かれています。
Core Reporting API - Reference Guide | Analytics Core Reporting API
カスタムコネクター 作成
Google Analytics API の利用には認証に OAuth 2.0 を利用することが要求されます。
Power Automate から このAPIを利用するにあたり、AAD 以外の OAuth を利用する方法が調べてもなさそうだったので、おとなしくカスタムコネクターを利用することにしました。
※カスタムコネクターであればOAuth 2.0は認証方法として使用する場合に、IdPとしてGoogleが標準的にサポートされている
Google API Console での作業
Google Analytics Reporting API を利用するにあたり、少なくとも以下を Google API Consoleでやっておく必要があります。
- Analytics Reporting API の有効化
- OAuth 同意画面の構成
- OAuth クライアントID/シークレットの取得
1. Analytics Reporting API の有効化
Google API Console で [+APIとサービスの有効化] をクリックして表示される API ライブラリで Google Analytics Reporting API を検索し、これを有効化します。
ここは特に難しい操作はないですね。
2. OAuth 同意画面の構成
OAuth 同意画面とはこんな感じの画面です。利用するアカウントの選択と、それに続く「どういうデータにアクセスします」というスコープの明示と同意です。
アプリ名、サポートメール (ここは適当に自分の持っているアドレスに) 、承認済みドメイン 、連絡先、テストユーザーの追加 を行います。
※承認済みドメインには、カスタムコネクターを作成したときに表示されるリダイレクトURLのドメインを追加しました。
これでOAuth 同意画面の構成は完了です。
3. OAuth クライアント ID/シークレットの取得
同意画面の構成ができたら、カスタムコネクターの作成画面にも出てくる、クライアントIDとシークレットを取得します。
Google API Console のトップから、[ 認証情報 ] > [ +認証情報の作成 ] > [ OAuthクライアントID ] とすすみ、必要情報を入力します。
なおこの時承認済みリダイレクトURLを設定する箇所がありますが、ここにはカスタムコネクターの作成時に発行されるリダイレクトURLを設定します。
保存をするとクライアントIDとシークレットが表示されるので、これをカスタムコネクターの作成のためにどこかにコピーしておきます。
※クライアントIDとシークレットはいつでも API Console の 認証情報 から取得できるのでコピーし忘れてもあわてる必要はありません!(私はあわてた)
以上でGoogle API Console側での作業は終わりです。
Power Platform側での作業
Power Apps または Power Automate を表示し、カスタムコネクターを作成していきます。
設定 | 値 |
---|---|
Scheme | HTTPS |
Host | www.googleapis.com |
Base URL | /analytics/v3 |
Authentication Type | OAuth 2.0 |
Identity Provider | |
Client id | 先ほど取得したクライアントID |
Client secret | 先ほど取得したシークレット |
Scope | https://www.googleapis.com/auth/analytics.readonly |
アクションの追加は、適当な名前を付けて、Query Explorer で取得したサンプルのURLをインポートすると自動的にコネクターの入力パラメータを定義してくれます。
Power Automate でこのコネクターを利用する分には、レスポンスの定義は必ずしも必要ありません。
最後に保存をして、テストを行います。
※コネクションを作成してテストを行いましたが、1回目はタイムアウトしてしまいました。2回目で無事テスト成功。
以上でカスタムコネクターの生成は完了です。
おわり
最後にフローを簡単に。
カスタムコネクターでデータをとってくるだけといえばそれだけなのですが、ちょっと返ってくるデータに注意が必要です。
Google Analytics Reporting API では、どうやらメトリックとディメンションが1つの配列に入って返されます。つまり
[ [ "20201230", "1090" ], [ "20201231", "810" ], [ "20210101", "340" ], [ "20210102", "730" ], [ "20210103", "605" ], [ "20210104", "10000" ], [ "20210105", "11111" ], [ "20210106", "12345" ] ]
こんなデータになるのです。各行の配列の1つ目がディメンション、2つ目がメトリックになっています。
...せめてプロパティを入れてほしいですね。
Power Automateでこれを処理して "普通の" 配列にするには Select アクションを利用します。
外側の配列を入力として、ディメンション、メトリックをそれぞれ item()?[0] , item()?[1]
で指定することでフラットなデータに変換することができます。
このようなフラット化を施しておけば、あとは表にするなり、チャートを作成するなりして通知に乗せられます。
ということで、Google のAPI で OAuth が必要な場合にはカスタムコネクターを作成するのがたぶんもっとも手軽です。
他の方法でも同様ですので、ぜひ試してみてください。