【2023年03月】Google Analytics 4 から API を使用してデータを取得する方法
Analyticsの中でも "Reporting API” と "Data API” に分かれている!?
詳細調査が出来次第、追記致します。
Python接続は "Data API” を記載しています。
調べてみて
今回調べていて何度か削除・登録をやり直しました。。。
WEB上には「ユニバーサル アナリティクス」の情報だったり、v4に関しても公式にも複数やり方がありました。(クイックパターンなど)
まだ不明確な部分もありますが、随時更新予定です。
実施環境
※Google Analyticsは事前に設定済
種類 | バージョン |
---|---|
OS | Windows 10 Home 22H2 64ビット メモリ16GB |
Python | 3.11.1 |
Flask | 2.2.3 |
アナリティクスAPI設定
Googleの参考ページ

はじめてのアナリティクス Reporting API v4: サービス アカウント向け Python クイックスタート | Google Developers

API Quickstart | Google Analytics Data API | Google Developers
① プロジェクト作成
①-1:以下URLから プロジェクトを作成
をクリックします。
https://console.developers.google.com/start/api?id=analytics&%3Bcredential=client_key&hl=ja

①-2:作成プロジェクト情報を入力し 作成
ボタンをクリックします。
プロジェクト名
プロジェクト ID はプロジェクトに付けられたグローバルに一意な ID です。
プロジェクトの作成後にプロジェクト ID を変更することはできません。
場所
プロジェクトの組織・またはフォルダを指定。個人的な利用であればデフォルトの「組織なし」

② APIへのアクセスの有効化
②-1:プロジェクト作成後「APIへのアクセスの有効化」ページにて 次へ
をクリックします。

②-2:有効にする
をクリックします。

②-3:特にメッセージも画面遷移もないですが 有効にする が押せない状態となれば有効化は完了しています。

③ サービスアカウントの作成
③-1:以下URLにアクセスして、先ほど作成した プロジェクト
をクリックします。
https://console.developers.google.com/iam-admin/serviceaccounts?hl=ja

③-2:上部メニューの +サービスアカウントを作成
をクリックします。

③-3:サービスアカウントの詳細 情報を入力し 作成して続行
をクリックします。
サービスアカウント名
表示名
サービスアカウントID
アカウントID
サービスアカウントの説明
説明

③-4:このサービス アカウントにプロジェクトへのアクセスを許可する (省略可)
特に権限設定の必要がなければ 続行
をクリック

③-5:ユーザーにこのサービス アカウントへのアクセスを許可 (省略可)
特に権限設定の必要がなければ 完了
をクリック

④ 鍵の作成
API接続に必要な鍵を作成します。
④-1:完了後、一覧画面に遷移しますので、メール欄の リンク
をクリックします。

④-2:上部メニュー キー
タブをクリック →「鍵の追加」より 新しい鍵を作成
をクリックします。

④-3:キータイプは推奨の JSON
が選択されている事を確認し 作成
をクリックします。
クリックするとファイルが自動的にダウンロードされます。


※後述のサンプルでわかりやすいようにファイル名は「client_secrets.json」に変更しました。(ファイル名を変更しても問題なく接続出来ます)
⑤ Google アナリティクス アカウントにサービス アカウントを追加
⑤-1:先ほどダウンロードした「client_secrets.json」ファイルをメモ帳等で開き、メールアドレスをコピーします。
client_emailの箇所(今回では「outpust@outpustjp-20230321.iam.gserviceaccount.com」

⑤-2:Googleアナリティクスを開き、左メニュー下部 管理
をクリックします。

⑤-3:プロパティエリアの プロパティのアクセス管理
をクリックします。

⑤-4:右上 +
→ ユーザーを追加
をクリックします。

⑤-5:「⑤-1」でコピーした メールアドレス
を貼り付け、標準の役割は「閲覧者」にし、 追加
をクリックします。

⑤-6:これでAPIを通してアナリティクスが参照できるようになりました。

⑤-7:API接続する プロパティID を控えておきます(プログラムで指定する為)
プロパティエリアの プロパティのアクセス設定
をクリックします。


🐍PythonでGoogleアナリティクスにAPI接続してみる
①「google-analytics-data」ライブラリ使用した場合
①-1:Google Analyticsライブラリをインストールする
pip install google-analytics-data
①-2:サンプルプログラム
※当環境ではFlaskを利用しています。(今回Class化して実行しています)
import os
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Metric,
RunReportRequest,
)
# 環境変数「GOOGLE_APPLICATION_CREDENTIALS」に⑤-1でダウンロードした「client_secrets.json」のパスを指定
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = os.path.join(
os.getcwd(), 'application', 'mypackage', 'google', 'client_secrets.json')
class Analytics:
@classmethod
def sample_run_report(cls):
property_id = "★★★" # 「⑤-7」で控えた プロパティID
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="city")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", 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)
①-3:エラーが出る場合
エラーメッセージに記載ある通りに、「Google Analytics Data API」を有効化します。
有効化した後は「数分待ってから」再度プログラムを実行する
google.api_core.exceptions.PermissionDenied: 403 Google Analytics Data API has not been used in project xxxxxxxxx before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/analyticsdata.googleapis.com/overview?project=xxxxxxxxx then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry. [links {
description: "Google developers console API activation"
-- 翻訳 --
google.api_core.exceptions.PermissionDenied: 403 Google Analytics Data API は、プロジェクト xxxxxxx で以前に使用されたことがないか、無効になっています。https://console.developers.google.com/apis/api/analyticsdata.googleapis.com/overview?project=xxxxxxxxx にアクセスして有効化してから再試行してください。最近このAPIを有効にした場合は、当社のシステムにアクションが伝わるまで数分待ち、再試行してください。[リンク
という記述があります。"GoogleデベロッパーズコンソールAPIの有効化"

①-4:結果
-- 結果 --
Report result:
(not set) 8
Shibuya City 7
Osaka 3
Fukuoka 2
Himeji 2
Aikawa 1
Ashburn 1
Chiyoda City 1
Gifu 1
Hamamatsu 1
Itabashi City 1
Kagoshima 1
Koto City 1
Kumamoto 1
Matsuyama 1
Nagoya 1
Sapporo 1
Shinagawa City 1
Yaizu 1
Yokohama 1



