GA4 Data API で月次レポートを自動取得する
このモジュールで学ぶこと
- Google Cloud プロジェクトの作成と API の有効化
- サービスアカウントの作成と JSON 鍵の発行
- GA4 / Search Console へのサービスアカウント権限付与
- Python スクリプトで月次レポートを自動生成する方法
学習目標
このモジュールを終えると、以下のことができるようになります:
- Google Cloud Console でプロジェクトを作成し、API を有効化できる
- サービスアカウントを作成して認証鍵を発行できる
- Python スクリプトを実行して GA4 / Search Console の月次データを取得できる
- 取得したデータを Markdown レポートとして保存できる
目次
- セクション1: 全体像を理解する
- セクション2: Google Cloud プロジェクトの作成
- セクション3: API の有効化
- セクション4: サービスアカウントの作成
- セクション5: GA4 にサービスアカウントを追加する
- セクション6: Search Console にサービスアカウントを追加する
- セクション7: 認証鍵を安全な場所に配置する
- セクション8: Python 環境のセットアップ
- セクション9: レポートを生成する
- トラブルシューティング
- まとめ
- 参考資料
- よくある質問
事前準備
必要なもの
- GA4 が設定済みの Web サイト(Module 01-02 で設定済み)
- Search Console が設定済みの Web サイト(Module 03 で設定済み)
- Google アカウント(GA4 の管理者権限を持つもの)
- WSL(Ubuntu)環境(Python 3.10 以上)
確認すること
- GA4 のプロパティ ID(数字の列)がわかっている
- Search Console のプロパティタイプ(ドメインプロパティ or URL プレフィックス)がわかっている
セクション1: 全体像を理解する
なぜ API で取得するのか
GA4 の管理画面でも数字は見れます。しかし、毎月同じ項目を手動で確認するのは手間がかかります。
API を使うと:
- コマンド一発で先月のデータが全部取れる
- Markdown ファイルとして保存されるので、前月比較ができる
- Claude Code のスキルとして登録すれば、
/f-monthly-reportと打つだけで完了
仕組み
Google Cloud プロジェクト
├── GA4 Data API(有効化)
└── Search Console API(有効化)
↓
サービスアカウント(ロボット用の Google アカウント)
├── GA4 に「閲覧者」として追加
└── Search Console に「フル」権限で追加
↓
JSON 鍵ファイル(認証に使う)
↓
Python スクリプト → レポート生成
サービスアカウントとは、人間ではなくプログラムが使うための Google アカウントです。メールアドレスの形をしていますが、ログインには使えません。JSON 鍵ファイルが「パスワード」の役割をします。
チェックポイント
- API で自動取得する理由を理解した
- サービスアカウントの役割を理解した
セクション2: Google Cloud プロジェクトの作成
Step 1: Google Cloud Console にアクセス
https://console.cloud.google.com/ にアクセスし、GA4 に紐づいている Google アカウントでログインします。
Step 2: プロジェクトを作成
- 画面上部の「プロジェクトを選択」をクリック
- 右上の「新しいプロジェクト」をクリック
- プロジェクト名を入力(例:
my-analytics) - 「作成」をクリック
プロジェクト作成後のダッシュボード画面。プロジェクト名と ID が表示されます
チェックポイント
- Google Cloud Console にログインできた
- 新しいプロジェクトを作成できた
セクション3: API の有効化
2つの API を有効化します。
Step 1: API ライブラリを開く
左メニューの「API とサービス」→「ライブラリ」をクリックします。
Step 2: Google Analytics Data API を有効化
- 検索ボックスに「Google Analytics Data API」と入力
- 結果から「Google Analytics Data API」を選択(「Admin API」ではないので注意)
- 「有効にする」をクリック
API とサービスの画面。ここから「ライブラリ」をクリックして API を検索します
「Google Analytics Data API」を選択します。「Admin API」と間違えないように注意
Step 3: Search Console API を有効化
- 同じくライブラリで「Search Console API」を検索
- 「Google Search Console API」を選択
- 「有効にする」をクリック
「Google Search Console API」を選択して有効化します
チェックポイント
- Google Analytics Data API を有効化した
- Google Search Console API を有効化した
セクション4: サービスアカウントの作成
Step 1: 認証情報ページを開く
左メニューの「API とサービス」→「認証情報」をクリックします。
Step 2: サービスアカウントを作成
- 「認証情報を作成」→「サービスアカウント」をクリック
- サービスアカウント名を入力(例:
monthly-report) - ID は自動で生成されます(例:
monthly-report@my-analytics.iam.gserviceaccount.com) - 「作成して続行」をクリック
- 権限(ロール)の付与は省略して OK(GA4 側で設定するため)
- 「完了」をクリック
サービスアカウント名を入力します。メールアドレスが自動生成されます
Step 3: JSON 鍵を発行
- 作成したサービスアカウントの名前をクリック
- 「鍵」タブをクリック
- 「キーを追加」→「新しい鍵を作成」をクリック
「キーを追加」から「新しい鍵を作成」を選択します
- キーのタイプで「JSON」を選択
- 「作成」をクリック
JSON を選択して「作成」をクリック。鍵ファイルが自動でダウンロードされます
JSON ファイルが自動でダウンロードされます。この鍵ファイルは再発行できません。紛失した場合は新しい鍵を作成する必要があります。
チェックポイント
- サービスアカウントを作成した
- JSON 鍵ファイルがダウンロードされた
- サービスアカウントのメールアドレスをメモした
セクション5: GA4 にサービスアカウントを追加する
Step 1: GA4 管理画面を開く
- https://analytics.google.com/ にアクセス
- 左下の「管理」(歯車アイコン)をクリック
左下の歯車アイコンが「管理」です
Step 2: プロパティのアクセス管理を開く
- 「プロパティ設定」セクションの「プロパティのアクセス管理」をクリック
プロパティ設定の中にある「プロパティのアクセス管理」をクリックします
Step 3: サービスアカウントを追加
- 右上の「+」ボタンをクリック
- メールアドレス欄に、Step 4 でメモしたサービスアカウントのメールアドレスを入力
- 権限は「閲覧者」を選択(データを読むだけなので最小権限で OK)
- 「追加」をクリック
「閲覧者」を選択して追加します。管理者権限は不要です
サービスアカウントが閲覧者として追加されました
Step 4: プロパティ ID を確認
- 「管理」→「プロパティ設定」→「プロパティの詳細」を開く
- 右上に表示されるプロパティ ID(数字の列)をメモしておく
プロパティ ID は右上に表示されます。この数字を後のスクリプト設定で使います
チェックポイント
- GA4 にサービスアカウントを「閲覧者」として追加した
- プロパティ ID をメモした
セクション6: Search Console にサービスアカウントを追加する
Step 1: Search Console を開く
https://search.google.com/search-console にアクセスします。
Step 2: ユーザーを追加
- 左メニューの「設定」をクリック
- 「ユーザーと権限」をクリック
- 「ユーザーを追加」をクリック
- サービスアカウントのメールアドレスを入力
- 権限は「フル」を選択
- 「追加」をクリック
サービスアカウントが「フル」権限で追加されました
チェックポイント
- Search Console にサービスアカウントを「フル」権限で追加した
セクション7: 認証鍵を安全な場所に配置する
ダウンロードした JSON 鍵ファイルを、安全な場所に移動します。
なぜ移動するのか
- ダウンロードフォルダに置きっぱなしだと、うっかり削除したり、他の人に見られるリスクがある
- git リポジトリの中に置くと、コミット時にリモートにプッシュされてしまう(絶対にやってはいけない)
- ホームディレクトリの隠しフォルダに置くのが安全
Step 1: ディレクトリを作成
WSL のターミナルで以下を実行します:
mkdir -p ~/.config/google-cloud
Step 2: 鍵ファイルをコピー
ダウンロードフォルダから安全な場所にコピーします。ファイル名は自分でわかりやすい名前に変更します:
cp "/mnt/c/Users/あなたのユーザー名/Downloads/ダウンロードされたファイル名.json" ~/.config/google-cloud/ga4-service-account.json
Step 3: パーミッションを設定
本人だけが読み書きできるように制限します:
chmod 600 ~/.config/google-cloud/ga4-service-account.json
Step 4: 確認
ls -la ~/.config/google-cloud/ga4-service-account.json
-rw------- と表示されれば OK です。これは「所有者だけが読み書きできる」という意味です。
Step 5: ダウンロードフォルダの元ファイルを削除
安全な場所にコピーできたことを確認したら、ダウンロードフォルダの元ファイルは削除して構いません。万が一鍵を紛失しても、Google Cloud Console からいつでも新しい鍵を発行できます。
チェックポイント
-
~/.config/google-cloud/ga4-service-account.jsonに鍵を配置した -
chmod 600でパーミッションを制限した - ダウンロードフォルダの元ファイルを削除した
セクション8: Python 環境のセットアップ
Step 1: 仮想環境を作成
システムの Python を汚さないように、専用の仮想環境を作ります:
python3 -m venv ~/.venvs/analytics
Step 2: 仮想環境を有効化してライブラリをインストール
source ~/.venvs/analytics/bin/activate
pip install google-analytics-data google-api-python-client google-auth
インストールが完了すると Successfully installed ... と表示されます。
Step 3: レポート保存用ディレクトリを作成
mkdir -p /mnt/c/analytics-reports/scripts
mkdir -p /mnt/c/analytics-reports/あなたのプロジェクト名
チェックポイント
- Python 仮想環境を作成した
- 3つのライブラリをインストールした
- レポート保存用ディレクトリを作成した
セクション9: レポートを生成する
Step 1: スクリプトを配置
2つの Python スクリプトを /mnt/c/analytics-reports/scripts/ に配置します。
スクリプトは以下のリポジトリからダウンロードするか、手動で作成してください:
fetch-ga4-report.py— GA4 Data API からデータを取得fetch-search-console-report.py— Search Console API からデータを取得
各スクリプトの冒頭にある設定値を自分の環境に合わせて変更します:
fetch-ga4-report.py:
PROPERTY_ID = "あなたのプロパティID" # 例: "505728283"
CREDENTIALS_PATH = os.path.expanduser("~/.config/google-cloud/ga4-service-account.json")
fetch-search-console-report.py:
SITE_URL = "sc-domain:あなたのドメイン" # 例: "sc-domain:example.com"
CREDENTIALS_PATH = os.path.expanduser("~/.config/google-cloud/ga4-service-account.json")
Search Console のサイト URL は、プロパティの登録タイプによって異なります:
| 登録タイプ | SITE_URL の書き方 |
|---|---|
| ドメインプロパティ | sc-domain:example.com |
| URL プレフィックス | https://example.com |
どちらで登録されているかわからない場合は、以下のコマンドで確認できます:
source ~/.venvs/analytics/bin/activate
python3 -c "
from google.oauth2 import service_account
from googleapiclient.discovery import build
import os
creds = service_account.Credentials.from_service_account_file(
os.path.expanduser('~/.config/google-cloud/ga4-service-account.json'),
scopes=['https://www.googleapis.com/auth/webmasters.readonly']
)
service = build('searchconsole', 'v1', credentials=creds)
result = service.sites().list().execute()
for site in result.get('siteEntry', []):
print(f'{site[\"siteUrl\"]} (権限: {site[\"permissionLevel\"]})')
"
Step 2: GA4 レポートを生成
source ~/.venvs/analytics/bin/activate
python3 /mnt/c/analytics-reports/scripts/fetch-ga4-report.py --month 2026-03 --json
--month を省略すると前月のデータを自動取得します。
出力例:
📊 GA4レポート取得: 2026-03-01 〜 2026-03-31
├─ トラフィック概況...
├─ AI経由の流入...
├─ 流入元...
├─ コンバージョン...
├─ career-guide ページ...
└─ ページ別 TOP 30...
✅ レポート出力: /mnt/c/analytics-reports/yumesuta/2026-03-ga4-report.md
✅ JSONデータ: /mnt/c/analytics-reports/yumesuta/2026-03-ga4-data.json
Step 3: Search Console レポートを生成
python3 /mnt/c/analytics-reports/scripts/fetch-search-console-report.py --month 2026-03 --json
Step 4: レポートを確認
生成されたファイルを確認します:
ls -la /mnt/c/analytics-reports/あなたのプロジェクト名/
以下の4ファイルが生成されていれば成功です:
| ファイル | 内容 |
|---|---|
YYYY-MM-ga4-report.md | GA4 レポート(Markdown) |
YYYY-MM-ga4-data.json | GA4 生データ(前月比較用) |
YYYY-MM-search-console-report.md | Search Console レポート(Markdown) |
YYYY-MM-search-console-data.json | Search Console 生データ(前月比較用) |
レポートに含まれる指標
GA4 レポート:
| セクション | 内容 |
|---|---|
| トラフィック概況 | ユーザー数、PV、セッション、滞在時間、直帰率 |
| デバイス別 | PC / モバイル / タブレットの比率 |
| AI 経由の流入 | ChatGPT / Gemini / Copilot / Perplexity からのセッション数 |
| 流入元 TOP 20 | Google / Bing / Direct / SNS 等のソース別セッション数 |
| コンバージョン | contact_submit 等のカスタムイベント数 |
| ページ別 TOP 30 | PV / ユーザー / 滞在時間 / 直帰率のランキング |
Search Console レポート:
| セクション | 内容 |
|---|---|
| キーワード TOP 100 | クリック数 / 表示回数 / CTR / 平均順位 |
| ページ別 TOP 50 | ページごとのクリック / 表示 / CTR / 順位 |
| デバイス別 | PC / モバイル / タブレットの検索パフォーマンス |
チェックポイント
- GA4 レポートが正常に生成された
- Search Console レポートが正常に生成された
- 4つのファイルが出力ディレクトリに保存された
トラブルシューティング
「Permission denied」エラー(GA4)
原因: サービスアカウントに GA4 の閲覧権限が付与されていない
解決策: GA4 管理画面 →「プロパティのアクセス管理」でサービスアカウントのメールアドレスが「閲覧者」として追加されているか確認する
「User does not have sufficient permission for site」エラー(Search Console)
原因: SITE_URL の形式が間違っている。ドメインプロパティなのに https:// で指定している
解決策: セクション9 の Step 1 にある確認コマンドを実行し、正しいサイト URL を取得して設定する
「ModuleNotFoundError: No module named 'google'」
原因: 仮想環境を有効化せずにスクリプトを実行した
解決策: 実行前に source ~/.venvs/analytics/bin/activate を忘れずに実行する
鍵ファイルを紛失した
原因: ダウンロードフォルダから移動する前に削除した、または場所を忘れた
解決策: Google Cloud Console → サービスアカウント → 鍵タブ → 「キーを追加」で新しい JSON 鍵を発行する。古い鍵は自動的に無効にはならないので、不要な鍵は削除すること
まとめ
このモジュールで学んだこと
- Google Cloud プロジェクトを作成し、GA4 Data API と Search Console API を有効化した
- サービスアカウントを作成し、JSON 鍵ファイルを安全な場所に配置した
- GA4 と Search Console にサービスアカウントの権限を付与した
- Python スクリプトで月次レポートを自動生成した
最終的なファイル構成
~/.config/google-cloud/
└── ga4-service-account.json ← 認証鍵(chmod 600)
~/.venvs/analytics/ ← Python 仮想環境
/mnt/c/analytics-reports/
├── scripts/
│ ├── fetch-ga4-report.py ← GA4 取得スクリプト
│ └── fetch-search-console-report.py ← SC 取得スクリプト
└── プロジェクト名/
├── 2026-03-ga4-report.md ← 毎月蓄積される
├── 2026-03-ga4-data.json
├── 2026-03-search-console-report.md
└── 2026-03-search-console-data.json
次のステップ
- 毎月月初にスクリプトを実行し、レポートを蓄積する
- 前月の JSON データと比較して、トレンドを分析する
- GA4 カスタムイベント(コンバージョン計測)を設定し、レポートに反映する
参考資料
よくある質問
Q: Google Cloud の利用料金はかかりますか? A: GA4 Data API と Search Console API は無料で利用できます。Google Cloud プロジェクトの作成自体にも料金はかかりません。API のリクエスト数に上限がありますが、月次レポート程度の使用量であれば無料枠を超えることはありません。
Q: サービスアカウントの鍵ファイルを他の人と共有しても大丈夫ですか? A: 鍵ファイルは絶対に共有しないでください。この鍵を持っている人は、GA4 のデータを閲覧できてしまいます。git リポジトリにコミットするのも厳禁です。チームで使う場合は、メンバーごとに別のサービスアカウントを作成してください。
Q: 鍵ファイルを git にコミットしてしまった場合はどうすればいいですか?
A: すぐに Google Cloud Console でその鍵を無効化し、新しい鍵を発行してください。git の履歴からも削除する必要があります(git filter-branch または BFG Repo-Cleaner を使用)。
Q: レポートのカスタマイズはできますか? A: Python スクリプトを編集することで、取得する指標やフィルタ条件を自由にカスタマイズできます。GA4 Data API では、ディメンション(分類軸)とメトリクス(数値指標)を組み合わせて柔軟なレポートを作成できます。
Q: Search Console のデータが「ドメインプロパティ」と「URL プレフィックス」で違うのはなぜですか?
A: ドメインプロパティ(sc-domain:)はサブドメインも含む全体のデータが取得できます。URL プレフィックス(https://)は指定した URL 配下のデータのみです。サブドメインを持つサイトでは、ドメインプロパティのほうがより包括的なデータが得られます。