LoginSignup
2
2

More than 5 years have passed since last update.

Rubyで Google のMeasurement Protocolを一通り触ってみる

Last updated at Posted at 2016-11-22

概要

 Measurement Protocol とは、ユーザーの利用状況に関するオフラインのデータを、GAサーバーに直接送信するための、データフォーマットである。Measurement Protocolで送信されたオフラインデータは、GA上のデータと結合し分析することが可能となる。ここで紐付けられたデータは、AdWordsでも利用でき、広告出稿の最適化(DCO: Display Campaigin Optimizer)にも活用することができる。

 なお、Measurement Protocolでのデータ送信においては、Google Analytics等と異なり、Oauth2認証は必要でない。認証に必要なデータは、全て payloadに含まれている。

データ送信に必要な要素

# データ送信内容のサンプル
User-Agent: user_agent
POST https://www.google-analytics.com/collect
payload_data

簡単に利用する際に、必要な要素は大きく下記2点である。

  • トランスポート
  • ペイロード

トランスポートは、HTTPリクエストの方法とエンドポイントを決める。
ペイロードは送信するデータを決める。

トランスポートについて

Measurement Protocol におけるデータの送信方法は、GET,POSTが存在する。
基本的にはPOSTを使えば良いと思うので、ここではPOSTで話を進める。
なおPOSTに関しても、一件ずつデータを送信する場合と、一気に複数件データを送る場合で、
エンドポイントが異なる

# 一件ずつ
https://www.google-analytics.com/collect
# 複数件
https://www.google-analytics.com/batch

※ GETリクエストでデータを送信する場合

ペイロードについて

下記のフォーマットで送信することができる。

#ペイロードのフォーマット
v=1 // Protocol Version
&tid=UA-123456-1 // Tracking ID: データ送信先を識別するID
&cid=5555   // Client ID: ユーザー固有のもの
&t=pageview // Pageview hit type:

ペイロード

ペイロードとは、Measurement Protocolを使って、GA上で集計したいデータの塊。

# payload sample
v=1              // Version.
&tid=UA-XXXXX-Y  // Tracking ID / Property ID.
&cid=555         // Anonymous Client ID.

&t=event         // Event hit type
&ec=video        // Event Category. Required.
&ea=play         // Event Action. Required.
&el=holiday      // Event label.
&ev=300          // Event value.

payloadのサンプルは上記の通り。
ここで、payloadの中身はヒットタイプに依存して変化する。

ヒットの種類

  • pageview: 任意のユーザーが、特定のページを見たときとかに使う
  • screenview: screenのトラッキングに利用
  • event: ユーザーの行動を残す際に利用
  • transaction: eコマースに利用
  • item: eコマースに利用
  • social: ソーシャルメディアの計上に利用.サイト内でイイねされた数の分析とか
  • exception: 例外のトラッキングに利用
  • timing: 速度の計測などに利用

ざざっと並べるとこんな感じ。
ここでは、event typeを使ってテストをしていく。

利用に必要な情報

  • Tracking ID
  • Client ID

Tracking ID が必要な人は、google analyticsに登録して取ってきて欲しい。
client ID の取得については、analytics.jsを使って取得する必要がある。

client IDの取得

client IDを取得するコードはこのようになる。

ga(function(tracker) {
  var cid = tracker.get('clientId');
  console.log(cid);
});

テストコードの作成

動作確認に使ったコードがこちら。
client_idは ↑のjsのコードで取ってきたものを入れてください。

require 'staccato'
client_id = 'xxx.xxx'
tracker = Staccato.tracker('UA-xxxx-Y', client_id)
hit = Staccato::Event.new(tracker, category: 'conversion', action: 'conversion')
response = hit.track!
puts response

テストコードの確認

スクリーンショット 2016-11-22 午後9.13.49.png

注意点

  • AdWordsに紐付けることができる期限は、該当するユーザーのcookie_idが生成されてから10日間。
  • リクエストに問題があったとしても、Measurement Protocolから返されるレスポンスは2xx

参考URL

https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide
https://developers.google.com/analytics/devguides/collection/analyticsjs/events?hl=ja

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2