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を使えるように設定します。
- GCPコンソールにアクセスします。
- GA4と連携させたいプロジェクトを選択し、メニューから「APIとサービス」を選びます。
- 「APIとサービスの有効化」をクリックし、「Google Analytics Data API」を検索して「有効にする」をクリックします。

ステップ2:GCPでサービスアカウントを作成し、鍵をサーバーへ設置する
次に、PythonプログラムがGoogle APIにアクセスするために使用する「サービスアカウント」という専用のアカウントを作成します。
- GCPのメニューで「IAMと管理」>「サービスアカウント」の順に進み、「サービスアカウントを作成」をクリックします。
- 「サービスアカウント名」に分かりやすい名前(例: ga-data-api-reader)を入力します。「サービスアカウントID」は自動で入力されます。「完了」をクリックしてアカウントを作成します。
- 作成したサービスアカウントの一覧に戻り、今作成したアカウントのメールアドレス(`…@…iam.gserviceaccount.com`)をコピーしておきます。これはステップ3で使用します。
- 作成したサービスアカウントをクリックして詳細画面に入り、「キー」タブを選択します。
- 「鍵を追加」>「新しい鍵を作成」を選び、キーのタイプとして「JSON」を選択して「作成」をクリックします。
- JSON形式の鍵ファイルがPCにダウンロードされます。これがAPIにアクセスするための「秘密鍵」です。
- ダウンロードしたJSONファイルを、プログラムを実行するサーバーの任意の場所(例: `/home/user_name/credentials/`)にアップロードします。ファイル名は分かりやすいもの(例: `credentials.json`)に変更しても構いません。
- プログラムがこの鍵ファイルを読み込めるよう、環境変数にパスを設定します。
.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側で権限を付与します。
- Google Analyticsにアクセスし、対象のプロパティを選択します。
- 左下の「管理」(歯車アイコン)をクリックします。
- 「プロパティ」列にある「プロパティのアクセス管理」をクリックします。
- 右上の「+」ボタンをクリックし、「ユーザーを追加」を選択します。
- メールアドレス入力欄に、ステップ2でコピーしたサービスアカウントのメールアドレスを貼り付けます。
- 付与する権限は、データを読み取るだけなので「閲覧者」を選択します。「追加」をクリックして完了です。

ステップ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 …
pip や setuptools のバージョンが古い場合に発生することがあります。以下のコマンドでアップグレードを試みてください。
# 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 python や which pip コマンドで実行パスを確認し、ライブラリをインストールした環境のPythonを使ってスクリプトが実行されるよう、.bash_profile のエイリアス設定などを見直してください。
補足
GoogleのAPI関連ライブラリは、Python 3.8以上を要求する場合があります。古いPythonバージョン(2.x系など)では動作しない可能性があるため、ご注意ください。
まとめ
今回は、PythonとGoogle Analytics Data API (GA4) を使って、GCPの設定から実際のデータ取得までの一連の流れを解説しました。
API連携ができるようになると、日々のレポート作成を自動化したり、自社のWebサイトに人気記事ランキングを表示したりと、Webサイト運営の幅が大きく広がります。ぜひこの記事を参考に、GA4データの活用にチャレンジしてみてください。
参考サイト
- Google API Python Client (GitHub)
- GA4 APIでデータを取得する方法 (DevelopersIO)
- GA4 Data API v1 のフィルタ(Filter)について (Zenn)
- 公式リファレンス: FilterExpression
- 公式サンプル: 並べ替え (Ordering)
よくある質問(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など)や自社開発の管理画面で可視化する。