GA4月次レポートをPythonで自動化してみた話(前編)
2025.08.05 09:00
2025.08.03 20:59

GA4の管理画面って、ふつうに見やすいんだけど、「月ごとのレポートを毎月自動で出したい」ってなったときには少し手間ですよね。しかも、ちょっとカスタマイズしようとすると「探索」や「比較」では限界があって、「あれ?これ毎月やるの面倒かも…」ってなるんです。
というわけで、Python + GA4 Data API を使って、「月次レポートをコードで自動生成する仕組み」を作ってみました。
やりたかったこと
- 月単位でアクセス数(パソコン/スマホ別)を取得
- 前月比を自動で出したい
- レポート形式に整形して出力(ExcelやCSV)
- できればGA画面を開かなくても済むように
Data APIを使うにはGoogle Cloudの設定が必要
まず、GA4のデータをPythonから取得するには、GA4 Data API v1 を使う必要があるみたいですね。このAPIを使うには、ちょっとした前提設定が必要らしいです。
- Google Cloud Console にアクセス
- プロジェクトを作成
- GA4 Data API v1 を有効にする
- サービスアカウントを作成し、鍵(JSON)をダウンロード
- GA4側で、そのサービスアカウントに「閲覧権限(アナリスト)」を付与
PythonからAPIを呼び出す
実際のコードはPythonで書きます。
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import RunReportRequest
from google.oauth2 import service_account
SCOPES = ["https://www.googleapis.com/auth/analytics.readonly"]
KEY_PATH = "service-account.json"
PROPERTY_ID = "XXXXXXX" # GA4のプロパティID
credentials = service_account.Credentials.from_service_account_file(KEY_PATH, scopes=SCOPES)
client = BetaAnalyticsDataClient(credentials=credentials)
request = RunReportRequest(
property=f"properties/{PROPERTY_ID}",
dimensions=[{"name": "deviceCategory"}],
metrics=[{"name": "activeUsers"}],
date_ranges=[{"start_date": "2024-07-01", "end_date": "2024-07-31"}],
)
response = client.run_report(request)
for row in response.rows:
print(f"{row.dimension_values[0].value}: {row.metric_values[0].value}")
取っている内容はこんな感じ
- 対象期間:2024-07-01 ~ 2024-07-31
- 指標:アクティブユーザー数(
activeUsers
) - ディメンション:デバイスカテゴリ(
deviceCategory
/desktop
,mobile
,tablet
など)
出力イメージはこんな感じ
desktop: 1234
mobile: 5432
tablet: 345
この出力結果を見ることで、
- PCとスマホのアクセス比
- タブレットがどれくらい使われてるか
などがざっくり把握できます。
さらに date
ディメンションを加えれば日別で出せるし、country
を加えれば国別にもできます。
数値がGA画面と違う…?
最初にデータが出てきたとき、「あれ?UIで見た数と違う?」って思いました。
実際、APIで取れる値とGA画面で見る値が少し違うことがあるんですね。
でも、改善に使うなら「目安」として見れば十分。指標の取り方を毎回統一しておけば、推移を見て判断するには問題ないです。
まだ整形とか出力とか、やりたいことはありますが、
ひとまず「API叩いて数字を取る」とこまではできたので、自分用メモとして残しておきます。
次は月次レポートっぽい形にしてみようと思います。
今回は以上です!