IT

GA4のメジャメントプロトコルで計測する

2023年6月9日

そもそもMeasurement Protocolとは

この図を見るように、
① webサイトから直接、エンドポイントにリクエストしてデータ収集したり、
② webサイトからさまざまな情報がサーバに送られ、そしてサーバ経由でエンドポイントにリクエストしてデータ収集したり、
③ アプリからさまざまな情報を直接エンドポイントにリクエストしてデータ収集したり
することができます。

これは確かに今まで通りで、

そもそもGA4ってどのようにしてデータを送っているのか

リクエストURLをのぞいてみましょう。

さまざまなパラメータをリクエストURLに載せて情報を送っています。
パラメータだけではなく、ペイロードやHTTPリクエストヘッダに入れて送ってます。ヘッダにはcookieなど送ってますね!

Google Analyicsはそもそもアクセス解析ツールと呼ばれています。
確かにwebやアプリ内の行動を解析するツールです。
でも実はGAの計測原理を考えてみれば、計測してリクエストをサーバにして、データを送っています。

つまり、さまざまなところでこのリクエストを作成して送れば、どんなデータもGAに送ることができそう!と考えることができそうですね!
リクエストURLを実行でき、サーバへ通信できる環境であれば、いつでもどこでも可能です!

なのでGAはアクセス解析ツールというよりは、リクエストURLによってデータを収集して可視化するツールと言い換えることができそうです。

 

注意事項

GA4のメジャメントプロトコルを使う中で、注意事項があります。
 

予約語のイベント

Google アナリティクスへのイベントの送信を Measurement Protocol のみで行うことも可能ですが、利用できるレポートは限られる可能性があります。Measurement Protocol の目的は、gtag、タグ マネージャー、Firebase 向け Google アナリティクスによる既存イベントの収集を補強することにあります。一部のイベントやパラメータの名前は、自動収集で使用するため予約されており、Measurement Protocol を通して送信することはできません。

https://developers.google.com/analytics/devguides/collection/protocol/ga4?hl=ja#full_server-to-server

とあるようにイベント名は、自動的に計測するものについては予約されているみたいですね。
メジャメントプロトコルでは使用できないみたいです。
 

POSTによる送信

さらに、GA4のメジャメントプロトコルでは、HTTPメソッドはPOSTしかダメとのことです。
これは何を意味するか。
HTTPメソッドには代表的なものとしてはGETがありました。GETはリクエストURLにむき出しのクエリパラメータをのせてデータを送るやり方です。UAのメジャメントプロトコルではこれが可能でした。
ただ、GA4ではPOSTしかダメなため、ペイロードにjson形式で載せて、リクエストをするという手法になります。
 

 

実際に送ってみる

実際にメジャメントプロトコルでデータをGA4に送ってみましょう。
以下の順番で設定をしていきます。

 

  • ① GA4プロパティを作成する
  • ② Webストリームを作成し、APIシークレットキーを発行する
  • ③ リクエストするためのコードを生成し、実行する

① GA4プロパティを作成する

これは皆さん、作成できるかと思いますので、省略。
 

② Webストリームを作成し、APIシークレットキーを発行する

Webストリームを作成することについても省略します。
APIシークレットキーの発行ですが、Webストリームの以下の管理画面から、APIシークレットキーを発行することが可能です。

以下の作成ボタンから、ニックネームを入力するだけで、APIシークレットキーの生成が完了します。

 

③ リクエストするためのコードを生成し、実行する

上でも説明した通り、POSTによるリクエストで送る必要があります。
そのため、json形式でGA4サーバに送るデータを書く必要があります。
 

json形式でどのように記載すればわからないので、以下のような生成ツールがあります。
この中で計測したいイベント名などを指定すると、簡単にjson形式を生成してくれます。
▼ GA4イベントビルダー
https://ga-dev-tools.google/ga4/event-builder/

 

以下のように上記URLにアクセスして、
先程のAPIシークレットキーや、Webストリームの測定IDを入力して、計測したいイベント名などを指定します。
さらには送信時間を指定したり、Webのclient_idを入力したりします。
 

そうすると、以下のようにリクエスト先となる情報と、ペイロード(json形式)が作成されます。
 


 

これをプログラム内でリクエストする処理の中に記載していきます。
今回Iot製品からGA4にデータを送ってみたかったですが、めんどくさいので、GCP内のIDEであるcloud shellにてpython書いて、リクエストしてみようと思います。
 

GCPにアクセスしてcloud shellを開いた上で、以下のようにコードを記載します。

import requests
import json
import datetime

url = 'https://www.google-analytics.com/mp/collect?api_secret=< APIシークレットキー >&measurement_id=< Webストリームの測定ID(G-から始まるやつ) >'
data = {
    "client_id":"123456789",
    "timestamp_micros":"1686332805079000",
    #"non_personalized_ads":false,
    "events":[{
        "name":"test_fire"
        }]
    }
data_encode = json.dumps(data)
response = requests.post(url, data=data_encode)

上記を実行してみると、以下のようにGA4プロパティに、上記で指定したイベント「test_fire」が計測されたのが確認できました。
 


 

通常GA4ではWebサイト内でGA4タグで計測すると、session_startやfirst_visitなどデフォルトで計測されるイベントがありますが、
メジャメントプロトコルではsession_startやfirst_visitなどデフォルトの計測はされず、自分で指定したイベントのみ計測されます。

 

このように今回はpythonで簡単に実行してみましたが、
pythonが書ける環境や、リクエストなのでjsが書ける環境、そしてネットワークにつながってGAサーバに送信できる環境であれば、
どこでも処理を書いてデータ収集が可能なので、さまざまなところで応用効きそうですね!

それこそスーパーなどでデバイスで決済する時とか、ピッてなった時にトリガーして、裏でpythonなり実行して、
GAサーバに送るなど、そういったこともできるので、Web上の行動だけではなく、実際にスーパーで購入した情報までGA上で紐付けてみれたりできますね!

皆さんもさまざまなところでデータ収集してみてください!

-IT
-

© 2024 Yosshi Labo. Powered by AFFINGER5