Python で Google Analytics4 の Measurement Protocol を送付できる adswerve/GA4-Measurement-Protocol-Python: Google Analytics 4 Python Library for Measurement Protocol
というPythonのライブラリがあります。
最終更新が、Dec 2020 で少し昔ですが、Measurement Protocol の記録ができるか試してみました。
実施したことを、記載します。
動作環境
動作確認に使用した環境は以下になります。
!sw_vers
ProductName: macOS
ProductVersion: 12.5
BuildVersion: 21G72
!python -V
Python 3.7.2
インストール
!pip install ga4mp
Requirement already satisfied: ga4mp in /Users/kensakurai/Programing/GitHub/monotalk_blogs/contents/jupyter/.env_jupyter/lib/python3.7/site-packages (1.1.1)
Google Anatlyics 4 の 設定
Universal Analytics では特に設定が不要でしたが、Google Analytics 4 では、以下の設定値が必要となります。
それぞれ取得方法をあわせて記載します。
-
Measurement ID
管理をクリック > データストリームをクリック > イベントを送信したいデータストリームをクリック > 測定IDのコピー
で入手できます。 -
Measurement Protocol API secrets
管理をクリック > データストリームをクリック > イベントを送信したいデータストリームをクリック > Measurement Protocol API secret
から作成できます。 初回は規約への同意が必要でした。 -
Google API client ID
Github Repository の README.md には、設定 | Sign In With Google | Google Developers へのリンクがありますが、API のクライアントIDとは別物で GA4でブラウザごとに払い出されるIDのことだと思われます。
関連するIsuueが起票されていました。
Client ID description misleading? · Issue #31 · adswerve/GA4-Measurement-Protocol-Python -
カスタムイベントの作成
設定をクリック > イベントをクリック > イベントの作成をクリック
でカスタムイベントが作成できます。 Measurement Protocol から送付するイベントと一致するイベントがGoogle Analytics 4 に定義されていないと、イベントを送付しても認識されませんでした。
サンプルスクリプト
以下は、mp_test
というカスタムイベントを送付するスクリプトです。
Google Analytics4 上で同名のカスタムイベントがあれば、Google Analytics4 にイベントが記録されます。
from ga4mp import Ga4mp
# GA4の ライブラリAPIインスタンス生成
ga = Ga4mp(measurement_id = <MEASUREMENT_ID>, api_secret = <API_SECRET>, client_id=<CLIENT_ID>)
# イベント名と、送付パラメータの定義
event_type = 'mp_test'
event_parameters = {'paramater_key_1': 'parameter_1', 'paramater_key_2': 'parameter_2'}
event = {'name': event_type, 'params': event_parameters }
events = [event]
# イベント送信
ga.send(events)
# -----------------------------------
# プロパティの設定
ga.set_user_property('user_id', 'Thales2000')
ga.set_user_property('customer_tier','enterprise')
# 設定したプロパティの削除
ga.delete_user_property('user_id')
# -----------------------------------
# postpone=True でまとめてイベントを送信するため、リストへ登録
ga.send(events, postpone=True)
# リスト登録したイベントをまとめて送信
ga.postponed_send()
- スクリプト実行時のログ
INFO:ga4mp.ga4mp:Sending POST to: https://www.google-analytics.com/mp/collect INFO:ga4mp.ga4mp:Batch Number: 1 INFO:ga4mp.ga4mp:Status code: 204
ga4mp は、ライブラリ内部でログ出力しているようで、HTTPのステータスコードが、204返しています。
個人的にあまり馴染みのないステータスコードなので、正常終了しているのが、不安でしたが、Measurement Protocol のリファレンス | Google アナリティクス 4 向けの Measurement Protocol | Google Developers に以下、記載があり問題ないのかなと思いました。
Measurement Protocol は、HTTP リクエストを受け取った場合には必ず 2xx ステータス コードを返します。ペイロード データの形式が不適切であったり、ペイロードのデータが間違っていたり、Google アナリティクスで処理されていなかったりしても、Measurement Protocol からエラーコードが返されることはありません。
個人的に満足いく検証ができたので、この結果をもとにツールに組み込みを行いたいと思います。
Universal Analytics の場合、イベントのパラメータとして4種類しか送れなかったのが、Google Analytics 4 は JSON ペイロードを送信できるようになっていて、 その辺り改良されたように思います。
以上です。
コメント