MoreBeerMorePower

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

Google Analytics API を Power Automate で 利用する (カスタムコネクター利用)

このブログやQiitaのほうにもGoogle Analyticsを設定していて、どのページがどれくらい見られているかを時々確認しているのですが、どうせなら定期的に簡易なレポートを自分のよく見る場所に送りたいなと思ったのがきっかけです。

Google Analytics には Reporting API が用意されており、これを実行することでHTTPで任意のクエリを実行しデータを取得することができます。

developers.google.com

今回は Google Analytics の簡易レポートを自動作成するために Power Automate で Reporting API を実行して結果を Teams に送信してみたので、その手順を残しておきます。

Query Explorer

Reporting API のクエリを構成する際には Query Explorer でお試し実行してみるのが良いです。

Query Explorer — Google Analytics Demos & Tools

Google Analytics を設定しているサイトの一覧が表示されてそこから対象を選択し、メトリックやメジャーを指定するとデータと実行したクエリを返してくれます。

f:id:mofumofu_dance:20210107222225p:plain

単純に過去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が標準的にサポートされている

f:id:mofumofu_dance:20210107223702p:plain

Google API Console での作業

Google Analytics Reporting API を利用するにあたり、少なくとも以下を Google API Consoleでやっておく必要があります。

  1. Analytics Reporting API の有効化
  2. OAuth 同意画面の構成
  3. OAuth クライアントID/シークレットの取得

1. Analytics Reporting API の有効化

Google API Console で [+APIとサービスの有効化] をクリックして表示される API ライブラリで Google Analytics Reporting API を検索し、これを有効化します。

f:id:mofumofu_dance:20210107230005p:plain

ここは特に難しい操作はないですね。

2. OAuth 同意画面の構成

OAuth 同意画面とはこんな感じの画面です。利用するアカウントの選択と、それに続く「どういうデータにアクセスします」というスコープの明示と同意です。

f:id:mofumofu_dance:20210107230709p:plain

アプリ名、サポートメール (ここは適当に自分の持っているアドレスに) 、承認済みドメイン 、連絡先、テストユーザーの追加 を行います。

f:id:mofumofu_dance:20210107231546p:plain

※承認済みドメインには、カスタムコネクターを作成したときに表示されるリダイレクトURLのドメインを追加しました。

これでOAuth 同意画面の構成は完了です。

3. OAuth クライアント ID/シークレットの取得

同意画面の構成ができたら、カスタムコネクターの作成画面にも出てくる、クライアントIDとシークレットを取得します。

Google API Console のトップから、[ 認証情報 ] > [ +認証情報の作成 ] > [ OAuthクライアントID ] とすすみ、必要情報を入力します。

f:id:mofumofu_dance:20210107232609p:plain

なおこの時承認済みリダイレクト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 Google
Client id 先ほど取得したクライアントID
Client secret 先ほど取得したシークレット
Scope https://www.googleapis.com/auth/analytics.readonly

f:id:mofumofu_dance:20210107235303p:plain

アクションの追加は、適当な名前を付けて、Query Explorer で取得したサンプルのURLをインポートすると自動的にコネクターの入力パラメータを定義してくれます。

f:id:mofumofu_dance:20210107235911p:plain

Power Automate でこのコネクターを利用する分には、レスポンスの定義は必ずしも必要ありません。

最後に保存をして、テストを行います。

※コネクションを作成してテストを行いましたが、1回目はタイムアウトしてしまいました。2回目で無事テスト成功。

以上でカスタムコネクターの生成は完了です。

おわり

最後にフローを簡単に。

f:id:mofumofu_dance:20210108000329p:plain

カスタムコネクターでデータをとってくるだけといえばそれだけなのですが、ちょっと返ってくるデータに注意が必要です。

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]で指定することでフラットなデータに変換することができます。

f:id:mofumofu_dance:20210108000921p:plain

このようなフラット化を施しておけば、あとは表にするなり、チャートを作成するなりして通知に乗せられます。

ということで、Google のAPI で OAuth が必要な場合にはカスタムコネクターを作成するのがたぶんもっとも手軽です。

他の方法でも同様ですので、ぜひ試してみてください。

f:id:mofumofu_dance:20210108002307p:plain