Google Analytics のデータを API で取得する
Google Analytics のイベントデータをアプリケーションで活用したく取り込み方法を軽く調査しました。
ざっと調べた感じ以下の取り込み方法がありそうでした。
- BigQuery とリンクして、BigQuery から取り出す
- Google Analytics Reporting API v4 による取り出し
- Google Analytics Data API による取り出し
一番柔軟なのは BigQuery から取り出すことだと思うのですが、今回のアプリケーションは Google Cloud を利用していないということもあり BigQuery 利用は最終案。
Reporting API は UA、Data API は GA4 という情報を見た(真偽は定かではない)ので今回はまずは Data API を試してみます。
Google Analytics Data API
Google Analytics 4(GA4)のレポートデータにプログラムでアクセスできる。
正式リリースされていない
まだベータ版という位置づけらしい。
本格利用時までに正式リリースされるといいんだけど。。
ユースケース
- Google アナリティクスのデータを表示するカスタマイズされたマイレポートを作成する。
- 複雑なレポートタスクを自動化して時間を節約する。
- Google アナリティクスのデータを他のビジネス アプリケーションと統合する。
今回はサイト内検索キーワードの取得が目的で、取得可能なデータ種類によってできそう。
利用するメソッド
今回は 1種類のデータのみ、複雑なことはしないので runReport
を利用すればよさそう。
CLI による API クイックスタート
今回はまずはデータ取得できるかだけ試したかったので CLI によるクイックスタートを試してみる。
このページ以降、未翻訳だからか日本語だと表示できないページがあるので表示できないページは言語を英語に設定した方がいい。
流れ
- API の有効化
- gcloud コマンドのインストール
- API リクエスト
1. API の有効化
Google Analytics Data API をリクエストするには Google Cloud のプロジェクトと、認証情報が必要になる。
ドキュメントの「Enable the Google Analytics Data API v1」をクリックすることで Google Cloud のコンソールを操作せずに設定できる。
プロジェクト名を入力
利用方法に Desktop App を選択
認証情報の出力
「DOWNLOAD CLIENT CONFIGURATION」から認証情報を保存する
2. gcloud コマンドのインストール
リンク から各 OS ごとのインストール方法が案内されている。
私は野良なコマンドラインインストールが嫌なので asdf でインストールした。Homebrew には配布がなかった。
3. API リクエスト
まずは作成したクライアントに対してログインする。
gcloud、credentials.json は自分の環境のパスで指定する。
gcloud auth application-default login \
--scopes=https://www.googleapis.com/auth/analytics.readonly \
--client-id-file=./credentials.json
コマンド結果に https://accounts.google.com/o/oauth2/auth
から始まる URL が表示されるのでブラウザからアクセスする。
Google アカウント選択画面 -> 警告画面(アプリ) -> アクセス許可 と遷移する。
ブラウザ操作を終えると $HOME/.config/gcloud
に gcloud の設定ファイルが作成される。
GA4 のプロパティ ID を GA の画面から取得する。基本的に数字 10桁?
以下のレポート API は6/1 - 15 の日付範囲の国別のアクティブユーザー数を取得するリクエスト。
export GA4_PROPERTY_ID=123456XXXX
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://analyticsdata.googleapis.com/v1beta/properties/$GA4_PROPERTY_ID:runReport" -d'{
"dateRanges": [{ "startDate": "2023-06-01", "endDate": "2023-06-15" }],
"dimensions": [{ "name": "country" }],
"metrics": [{ "name": "activeUsers" }]
}'
{
"dimensionHeaders": [
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "Japan"
}
],
"metricValues": [
{
"value": "100000"
}
]
},
{
"dimensionValues": [
{
"value": "Hong Kong"
}
],
"metricValues": [
{
"value": "100"
}
]
},
(略)
],
"rowCount": 11,
"metadata": {
"currencyCode": "JPY",
"timeZone": "Asia/Tokyo"
},
"kind": "analyticsData#runReport"
}
とりあえずデータを取得できた。
RunReport API リファレンス
主要な RunReport で指定可能なパラメータは以下の通り。
パラメータ | 説明 |
---|---|
dimensions | 集約する単位。GROUP BY みたいなの? |
metrics | 取得する集計値 |
dateRanges | 日付範囲 |
dimensionFilter | dimension に対する絞り込み条件 |
metricFilter | 集計値に対する絞り込み条件 |
orderBys | 並び替え条件 |
limit | 取得件数 |
dimensions、dimensionFilter に指定可能なフィールド
metrics、metricFilter に指定可能なフィールド
カスタムイベントの平均値を取得する
あるサイトでサイト内検索の検索キーワードとヒット件数をカスタムイベントで送信しています。
レポートとして過去 1ヶ月の検索キーワードと平均ヒット件数を検索回数が多い順に取得したかったです。
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://analyticsdata.googleapis.com/v1beta/properties/$GA4_PROPERTY_ID:runReport" -d'{
"dateRanges": [{ "startDate": "2022-09-01", "endDate": "2022-10-30" }],
"dimensions": [{ "name": "customEvent:keyword" }],
"metrics": [
{ "name": "averageCustomEvent:count" },
{ "name": "countCustomEvent:count" }
],
"orderBys": [{
"desc": true,
"metric": { "metricName": "countCustomEvent:count" }
}],
"limit": 1000
}'
テストデータなので結果がわかりにくいけど正常に取得できていました。
{
"dimensionHeaders": [
{
"name": "customEvent:keyword"
}
],
"metricHeaders": [
{
"name": "averageCustomEvent:count",
"type": "TYPE_STANDARD"
},
{
"name": "countCustomEvent:count",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "aaa"
}
],
"metricValues": [
{
"value": "2"
},
{
"value": "3"
}
]
}
],
"rowCount": 1,
"metadata": {
"currencyCode": "JPY",
"timeZone": "Asia/Tokyo"
},
"kind": "analyticsData#runReport"
}
Appendix. API の有効化は何をしたの?
Google Cloud のコンソールにアクセスすると Quickstart というプロジェクトが作成されている。
認証情報に OAuth 2.0 クライアント ID が生成されている。
gcloud コマンドはこの認証情報を使って Google にログインして、Google アカウントとしてデータにアクセスしているようです。