【2023年03月】Google Analytics 4 から API を使用してデータを取得する方法

GoogleAnalytics

調べてみて

今回調べていて何度か削除・登録をやり直しました。。。
WEB上には「ユニバーサル アナリティクス」の情報だったり、v4に関しても公式にも複数やり方がありました。(クイックパターンなど)

まだ不明確な部分もありますが、随時更新予定です。

実施環境

※Google Analyticsは事前に設定済

種類バージョン
OSWindows 10 Home 22H2
64ビット メモリ16GB
Python 3.11.1
Flask2.2.3

アナリティクスAPI設定

Googleの参考ページ

はじめてのアナリティクス Reporting API v4: サービス アカウント向け Python クイックスタート  |  Google Developers
説明未取得
https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py?hl=ja
API Quickstart  |  Google Analytics Data API  |  Google Developers
説明未取得
https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries#python_1

① プロジェクト作成

①-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

プロフィール背景画像 プロフィール画像
名前:田中寛之
今まで約20年間、出版社、マスコミ、化粧品会社、システム会社・病院・クリニックにてシステムエンジニアとして勤務。現在、個人事業主「ONLINE-WORLD」として活動し、42歳からPythonを始めました!
プロフィール背景画像 プロフィール画像
名前:田中寛之
今まで約20年間、出版社、マスコミ、化粧品会社、システム会社・病院・クリニックにてシステムエンジニアとして勤務。現在、個人事業主「ONLINE-WORLD」として活動し、42歳からPythonを始めました!