🐤
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