【Googleアナリティクス4(GA4)】Google Analytics Data API v1の各種設定と実装


投稿日 2023年12月9日 >> 更新日 2023年12月14日

概要

Googleアナリティクスのユニバーサルアナリティクス(UA)が2023年7月1日でサポートが終了し、後継であるGoogleアナリティクス4(GA4)に引き継がれました。

UA時代のAPIである「Analytics Reporting API」では2023年8月22日までのデータしか取り扱うことができなくなり、それ以降のデータを扱うにはGA4のAPIである「Google Analytics Data API v1」を使用する必要があります。
厳密にはGoogleアナリティクス4を設定した時点でデータは収集されています。

今回はその「Google Analytics Data API v1」を利用するための各種設定と、Pythonによる簡単な実装となります。

前提としては既にGoogleアナリティクス4(GA4)に切り替えられていてデータ収集が行われている方がスムーズに行えます。

実行環境&使用ライブラリ

実行環境
Windows Subsystem for Linux
Python 3.6.9
使用ライブラリ ライセンス
google-analytics-data==0.12.1 Apache 2.0

Google Analytics Data API v1について

「Google Analytics Data API v1」はGoogleアナリティクス4により収集されたデータをプログラミングを使って取得することのできるAPIです。

厳密には「Google Cloud Platform(GCP)」のライブラリに置かれいてる「Google Analytics Data API v1」を有効にしてAPIにアクセスするために必要な認証情報等の設定を行うことによりデータへアクセスすることができます。

ここで設定するAPIの流れはGoogle公式ドキュメントである「API Quickstart」チュートリアルと同じです。

しかし、中々上手く行かないのが性でもあります。

私が実際に設定してみて躓いたことなどもあるので、その辺りも気を付けながら進めて行きたいと思います。

Google Cloud Platform(GCP)でAPIの有効化

チュートリアルの「Step 1. Enable the API」では「Enable the Google Analytics Data API v1」ボタンをクリックすることで、GCPプロジェクトを作成し、「Google Analytics Data API v1」を自動的に有効にして必要なサービスアカウントを作成してくれるとの事です。

私の場合はボタンをクリックしても自動で「Google Analytics Data API v1」が有効になっていなったので、「Google Cloud Platform(GCP)」にアクセスして手動で有効にしました。

APIが有効になっているか確認する場合は以下のような手順で確認します。

まず「Google Cloud Platform(GCP)」にアクセスします。

以前のGoogleアナリティクス(UA)APIの「Analytics Reporting API」を取り扱った事のある方であればアカウントなどの設定をされていると思うので、以下のような画面にアクセスされると思います。

画面左上のナビゲーションメニューバーを開き、「APIとサービス」から「有効なAPIサービス」をクリックします。

以下のように「有効なAPI」が活動しているデータがグラフによって表示されます。

下方向にスクロールしていくと、有効になっているAPIの名称がテーブル表記されているかと思います。

そこに「google analytics data api」という名前が無ければ有効になっていないので、手動で有効にしていきます。

画面中央上にある「+ APIとサービスの有効化」をクリックします。

クリックすると以下のよう画面へアクセスされます。

検索バーに「google analytics data api」と打ち込みアクセスすると以下の画面に遷移します。

「Google Analytics Data API」をクリックすると、無効の状態であれば「有効にする」というボタンが表示されているので、ボタンをクリックします。

「有効なAPIとサービス」の画面にアクセスして確認してみると、有効になっていることが分かります。

これでAPIの有効設定が完了しました。

APIが反映されるまで時間を有する可能性があるので気ままに待ちましょう。

認証情報が格納されたJSONファイルをダウンロード

「Google Cloud Platform(GCP)」にてAPIを有効にしたら、改めてチュートリアルの「Step 1. Enable the API」を進めて行きます。

「Step 1. Enable the API」節の「Enable the Google Analytics Data API v1」をクリックして、認証情報が格納されたJSONファイルをダウンロードします。

クリックすると以下のようなポップアップが表示され、認証情報作成手続きにおけるプロジェクト名を記入します。

既存名である「Quickstart」で良い場合は「NEXT」をクリックします。

認証情報が格納されたファイルが作成されたので、ダウンロードする場合は「DOWINLOAD PRIVATE KEY AS JSON」をクリックします。

ファイルのダウンロードが完了すると、ポップアップ右下の表示が「CANCEL」から「DONE」に切り替わります。

ファイル名が知りたい場合は、以下のようにブラウザ(Google Chrome)右上のダウンロード履歴で確認することができ、プロジェクト名を「Quickstart」で作成した場合は「Quickstart-xxxxxxxx.json」のようなファイル名になります。

ダウンロードされたファイルは、Windowsの場合だと「Downloads」フォルダに置かれます。

「Windows Subsystem for Linux(WSL)」の環境でファイルまでの絶対パスを取得したい場合は、ファイル上で右クリックをして「プロパティ」を開きます。

以下のように表示され、Windowsのファイルパスをコピーします。

WindowsのファイルパスをLinuxの絶対パスに変換することのできる「wslpath」コマンドを実行します。

$ wslpath 'C:\Users\warik\Downloads'
/mnt/c/Users/warik/Downloads

ファイルが保管されている「Downloads」ディレクトリまでの絶対パスを取得できたので、ファイルを確認します。

$ ls /mnt/c/Users/warik/Downloads | grep json
Quickstart-3dd831b948ee.json

チュートリアルに従って、認証情報のJSONファイル名を「credentials.json」に変更しておきます。

$ mv /mnt/c/Users/warik/Downloads/Quickstart-3dd831b948ee.json /mnt/c/Users/warik/Downloads/credentials.json

これで「Step 1. Enable the API」は完了です。

認証情報のメールアドレスをGoogleアナリティクス4プロパティに設定

Step 2. Add service account to the Google Analytics 4 property」節では、「Step 1. Enable the API」節でダウンロードしたJSONファイルに定義されている「client_email」フィールドの値を、Googleアナリティクス4プロパティに追加設定する内容となります。

ダウンロードしたJSONファイルを開いて「client_email」フィールドを確認してみます。

以下は「grep」コマンドを使用してJSONファイルの「client_email」行のみ取得しています。

$ grep client_email /mnt/c/Users/warik/Downloads/credentials.json
"client_email": "starting-account-a1f8krkvgcqg@quickstart-xxxxxxxxxx.iam.gserviceaccount.com",

「client_email」の値である「starting-account-a1f8krkvgcqg@quickstart-xxxxxxxxxx.iam.gserviceaccount.com」をコピーして、Googleアナリティクス4プロパティに設定します。

メールアドレスを設定するには、Googleアナリティクス4を開いて検索バーに「プロパティのアクセス管理」と打ち込みます。

以下のような画面に遷移されたら、追加をしたいので画面右上の「+」マークをクリックしてから、「ユーザーを追加」をクリックします。

「役割とデータ制限の追加」の画面に遷移されたら、ダウンロードしたJSONファイルに定義されていた「client_email」フィールドの値をメールアドレスのフォームに入力します。

そして「直接の役割とデータ制限」の欄では「閲覧者」にチェックをします。

画面上部の右側にある「追加」ボタンをクリックすると、認証情報のメールアドレスの設定が完了します。

Googleアナリティクス4のプロパティ設定は以上です。

APIに認証情報を提供するための環境変数の設定

Step 3. Configure authentication」節では、APIが実行される際に必要とする認証情報の提供元を設定していきます。

チュートリアルの説明でもある通り、「GOOGLE_APPLICATION_CREDENTIALS」という環境変数を設定することで、APIクライアントは自動で「GOOGLE_APPLICATION_CREDENTIALS」環境変数を検出して読み込みます。

「GOOGLE_APPLICATION_CREDENTIALS」環境変数には、ダウンロードしたJSONファイルの絶対パスを格納します。

以下はLinux環境下においての環境変数の設定です。

ホームディレクトリにある「.bash_profile」を開いて環境変数の追加を行います。

※「.bash_profile」に追加することでLinuxシステムが停止しても設定を維持することができます。

# GoogleアナリティクスAPI(GA4)
export GOOGLE_APPLICATION_CREDENTIALS="/mnt/c/Users/warik/Downloads/credentials.json"

if [[ -f ~/.bashrc ]] ; then
        . ~/.bashrc
fi

「.bash_profile」に「GOOGLE_APPLICATION_CREDENTIALS」環境変数を追加したら、「source」コマンドで反映させます。

$ source ~/.bash_profile

「printenv」コマンドでLinuxシステムの環境変数を取得することができるので確認してみます。

$ printenv
...
GOOGLE_APPLICATION_CREDENTIALS=/mnt/c/Users/warik/Downloads/credentials.json
...

これで環境変数の設定は完了です。

GA4のプロパティID取得とAPIモジュールをインストールして実装

Step 4. Install the client library」節では、Python用のAPIモジュールを使用した簡単な実装です。

APIを実装するには、ダウンロードしたJSONファイルによる認証ともう1つ、「Googleアナリティクス4のプロパティID」が必要です。

チュートリアルでは「Googleアナリティクス4」のプロパティIDについては触れていなかったので、プロパティIDの確認についても触れていきます。

プロパティIDを確認するには、「Googleアナリティクス4」を開いて検索バーに「プロパティ ID」と打ちます。

すると以下のようにプロパティIDがコピーできる状態でサジェストされるので、以降のAPI実装時まで保管しておきます。

「Googleアナリティクス4」のAPIモジュールをインストールします。

$ pip install google-analytics-data

以下は「2023年12月1日~今日」までにアクセスされた市区町村別のデータを取得しています。

※プロパティIDの設定を忘れないでください。

from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    DateRange,
    Dimension,
    Metric,
    RunReportRequest,
)


# ご自身のGoogleアナリティクス4のプロパティID
PROPERTY_ID = 123456789

def sample_run_report(property_id=PROPERTY_ID):

    client = BetaAnalyticsDataClient()

    request = RunReportRequest(
        property=f"properties/{property_id}",
        dimensions=[Dimension(name="city")],
        metrics=[Metric(name="activeUsers")],
        date_ranges=[DateRange(start_date="2023-12-01", end_date="today")],
    )
    response = client.run_report(request)

    print("Report result:")
    for row in response.rows:
        print(row.dimension_values[0].value, row.metric_values[0].value)

実行すると以下のような結果となります。

sample_run_report()
# Report result:
# (not set) 446
# Minato City 288
# Osaka 242

補足

APIを実行した際に「_InactiveRpcError: RPC terminated with <_InactiveRpcError:.status = statuscode.PERMISSION_DENIED Details = "Google Analytics Data API is not previously used or has been disabled in project xxxxxxxxxx.」または「_InactiveRpcError: RPC terminated with <_InactiveRpcError:.status = statuscode.PERMISSION_DENIED Details = "User does not have sufficient permissions for this property. For more information about property IDs, see」のようなエラーが出てしまった場合は、GCPライブラリの設定やGoogleアナリティクス4のアクセス管理の追加等の反映で時間がかかる場合があるので、少し時間を置くことにより実行できるようになることがあります。

それでは以上となります。

最後までご覧いただきありがとうございました。