🐤

Google Analytics 4(GA4) のAPIで403エラーが出た時

2024/10/15に公開

概要

Google Analytics Data APIをPythonから使おうとしたら、

google analytics api 403 User does not have sufficient permissions for this property. To learn more about Property ID

というエラーが出ました。これを解決できた方法を以下に書きます。

方法

まず、
https://www.zenryoku-kun.com/post/ga4-api
を参考に、
https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries?hl=ja
にアクセスして、jsonファイルをダウンロードします。その中のclient_emailのメールアドレスをこの後使います。

以下画像の赤枠部分のプロパティのアクセス管理を押して、

その後右上の+マークを押して、先ほどのメールアドレスを入力して追加します。

これで無事に通るはずです。

Pythonのコード

ちなみに、Pythonのコードは以下のようにしています。(参考: https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries?hl=ja#python_1)

credential.jsonが先ほどダウンロードしたjsonファイルになります。jsonファイル名は後から自分でcredential.jsonというファイル名に変更しましたが、これはもちろん任意のファイル名でOKです。ただし、以下コードのCREDENTIAL = "credential.json"のjsonファイル名はそのファイル名に変更する必要があります。

import os
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    DateRange,
    Dimension,
    Metric,
    RunReportRequest,
)

CREDENTIAL = "credential.json"
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = CREDENTIAL

def sample_run_report(property_id="YOUR-GA4-PROPERTY-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)

sample_run_report(property_id="YOUR-GA4-PROPERTY-ID")

Discussion