🐤

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

に公開

概要

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