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 ペイロードを送信できるようになっていて、 その辺り改良されたように思います。
以上です。

コメント