GA4のデータをPythonで取得!Analytics Data APIの設定からコード例まで徹底解説

2023.09.21

Webサイトを運営していると、「Google Analytics (GA4) のデータを自社のWebサイトや管理画面に表示したい」と考えることはありませんか? そんな時に役立つのが「Google Analytics Data API」です。

この記事では、Webサイト運営者や開発者の方に向けて、Pythonを使ってGoogle Analytics Data API (GA4) からデータを取得するための設定手順を、ステップバイステップで詳しく解説します。

本記事の手順を実行するには、Pythonとpipがサーバーにインストールされ、使用できる状態になっていることが前提です。それでは、早速始めましょう。

ステップ1:GCPでAnalytics Data APIを有効化する

まずは、Google Cloud Platform (GCP) でAPIを使えるように設定します。

  1. GCPコンソールにアクセスします。
  2. GA4と連携させたいプロジェクトを選択し、メニューから「APIとサービス」を選びます。
  3. 「APIとサービスの有効化」をクリックし、「Google Analytics Data API」を検索して「有効にする」をクリックします。
GCPのAPIとサービスのダッシュボード
GCPのAPIとサービス画面

ステップ2:GCPでサービスアカウントを作成し、鍵をサーバーへ設置する

次に、PythonプログラムがGoogle APIにアクセスするために使用する「サービスアカウント」という専用のアカウントを作成します。

  1. GCPのメニューで「IAMと管理」>「サービスアカウント」の順に進み、「サービスアカウントを作成」をクリックします。
  2. 「サービスアカウント名」に分かりやすい名前(例: ga-data-api-reader)を入力します。「サービスアカウントID」は自動で入力されます。「完了」をクリックしてアカウントを作成します。
  3. 作成したサービスアカウントの一覧に戻り、今作成したアカウントのメールアドレス(`…@…iam.gserviceaccount.com`)をコピーしておきます。これはステップ3で使用します。
  4. 作成したサービスアカウントをクリックして詳細画面に入り、「キー」タブを選択します。
  5. 「鍵を追加」>「新しい鍵を作成」を選び、キーのタイプとして「JSON」を選択して「作成」をクリックします。
  6. JSON形式の鍵ファイルがPCにダウンロードされます。これがAPIにアクセスするための「秘密鍵」です。
  7. ダウンロードしたJSONファイルを、プログラムを実行するサーバーの任意の場所(例: `/home/user_name/credentials/`)にアップロードします。ファイル名は分かりやすいもの(例: `credentials.json`)に変更しても構いません。
  8. プログラムがこの鍵ファイルを読み込めるよう、環境変数にパスを設定します。

.bash_profile などを開き、以下の行を追記してパスを通します。(ファイルパスはご自身の環境に合わせてください)

# .bash_profile を開く
vi ~/.bash_profile

# 以下の行を追記(Iキーで挿入モード)
export GOOGLE_APPLICATION_CREDENTIALS="/home/visual/delicious/.credentials/credentials.json"

# 保存して終了(Escキー → :wq)
# .bash_profile を再読み込み
source ~/.bash_profile

ステップ3:Google Analyticsでサービスアカウントに権限を付与する

作成したサービスアカウントがGA4のデータにアクセスできるよう、Google Analytics側で権限を付与します。

  1. Google Analyticsにアクセスし、対象のプロパティを選択します。
  2. 左下の「管理」(歯車アイコン)をクリックします。
  3. 「プロパティ」列にある「プロパティのアクセス管理」をクリックします。
  4. 右上の「+」ボタンをクリックし、「ユーザーを追加」を選択します。
  5. メールアドレス入力欄に、ステップ2でコピーしたサービスアカウントのメールアドレスを貼り付けます。
  6. 付与する権限は、データを読み取るだけなので「閲覧者」を選択します。「追加」をクリックして完了です。
GA4の権限設定画面
サービスアカウントに閲覧者権限を付与

ステップ4:Pythonクライアントライブラリをインストールする

サーバーのターミナルで、Google Analytics Data APIをPythonで扱うためのライブラリをpipでインストールします。

pip install google-analytics-data
pip install --upgrade google-api-python-client

ステップ5:Analytics APIを使いPythonでデータを取得する

いよいよPythonスクリプトを実行してデータを取得します。
以下は、直近30日間のページパス(`/recipe/detail/`で始まるページ)ごとのページビュー数を上位20件まで取得するサンプルコードです。

任意のファイル名(例: `analytics.py`)で保存してください。

'''
Google Analytics Data API (GA4)
https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries
'''
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    DateRange,
    Dimension,
    Filter,
    FilterExpression,
    OrderBy,
    Metric,
    RunReportRequest,
)

# TODO: "YOUR-GA4-PROPERTY-ID" をご自身のGA4プロパティIDに書き換えてください
property_id = "YOUR-GA4-PROPERTY-ID"

# 環境変数 GOOGLE_APPLICATION_CREDENTIALS から認証情報を読み込みます
client = BetaAnalyticsDataClient()

request = RunReportRequest(
    property=f"properties/{property_id}",
    dimensions=[Dimension(name="pagePath"), Dimension(name="pageTitle")],
    metrics=[Metric(name="screenPageViews")],
    date_ranges=[DateRange(start_date="30daysAgo", end_date="today")],
    dimension_filter=FilterExpression(
        filter=Filter(
            field_name="pagePath",
            string_filter=Filter.StringFilter(match_type='BEGINS_WITH', value='/recipe/detail/')
        ),
    ),
    order_bys=[
        OrderBy(metric=OrderBy.MetricOrderBy(metric_name="screenPageViews"), desc=True)
    ],
    limit=20
)

response = client.run_report(request)

# 取得したデータをリスト形式に整形
ret = []
for row in response.rows:
    ret.append([row.dimension_values[0].value, row.dimension_values[1].value, row.metric_values[0].value])

# 結果の確認(ターミナルで実行する場合)
# print(ret)

# 関数として外部から呼び出す場合は return を使用
# return ret

上記のコードをターミナルで実行して確認したい場合は、末尾の `print(ret)` のコメントを解除し、`python analytics.py` のように実行すると、取得したデータがターミナルに表示されます。

ディメンションやメトリクス、フィルタ(絞り込み)の指定方法を変更することで、様々なデータを取得できます。

エラーが出た場合の対処法

設定中によくあるエラーと対処法をまとめます。

エラー: Command “python setup.py egg_info” failed …

pipsetuptools のバージョンが古い場合に発生することがあります。以下のコマンドでアップグレードを試みてください。

# pip本体をアップグレード
pip install --upgrade pip

# setuptools をアップグレード
pip install --upgrade setuptools

#
# これらを実行してから、再度ライブラリのインストールを試します
pip install --upgrade google-api-python-client

エラー: ModuleNotFoundError: No module named ‘google’

Pythonが `google-api-python-client` をインストールした場所(パス)を見つけられていない可能性があります。

これは、プロジェクトで使用しているPythonの実行パスと、ライブラリをインストールしたPythonのパスが異なっている場合に発生しがちです(例: `pyenv` でバージョンを切り替えている場合など)。

which pythonwhich pip コマンドで実行パスを確認し、ライブラリをインストールした環境のPythonを使ってスクリプトが実行されるよう、.bash_profile のエイリアス設定などを見直してください。

補足
GoogleのAPI関連ライブラリは、Python 3.8以上を要求する場合があります。古いPythonバージョン(2.x系など)では動作しない可能性があるため、ご注意ください。

まとめ

今回は、PythonとGoogle Analytics Data API (GA4) を使って、GCPの設定から実際のデータ取得までの一連の流れを解説しました。

API連携ができるようになると、日々のレポート作成を自動化したり、自社のWebサイトに人気記事ランキングを表示したりと、Webサイト運営の幅が大きく広がります。ぜひこの記事を参考に、GA4データの活用にチャレンジしてみてください。

参考サイト

よくある質問(FAQ)

Q1: そもそも「サービスアカウント」とは何ですか?

A1: サービスアカウントとは、人間ではなく、プログラム(アプリケーションやサーバー)がGoogleのサービスにアクセスするために使用する「ロボット用のアカウント」のようなものです。人間がログインIDとパスワードを使う代わりに、プログラムは「鍵ファイル(JSON)」を使って認証を行います。これにより、安全に自動でAPIにアクセスできます。

Q2: Pythonコードに必要な「property_id」はどこで確認できますか?

A2: GA4のプロパティIDは、Google Analyticsの管理画面で確認できます。「管理」>「プロパティ」列の「プロパティ設定」を開くと、「プロパティ ID」という項目に表示されている数字が該当します。この数字をコード内の `YOUR-GA4-PROPERTY-ID` と置き換えてください。

Q3: 取得したデータで、具体的にどんなことができますか?

A3: 例えば、以下のような活用が可能です。

  • 人気記事ランキングの表示: 取得したページビュー数を基に、Webサイト上に「週間人気記事ランキング」を自動で表示する。
  • 定型レポートの自動化: 毎日や毎週のPV数、コンバージョン数などを自動で取得し、SlackやChatworkに通知する。
  • 社内ダッシュボードの作成: 取得したデータをデータベースに保存し、BIツール(Looker Studioなど)や自社開発の管理画面で可視化する。

CONTACT

webサイト制作、デザインに関するご相談、御見積のご依頼など、弊社へのお問い合わせはこちら