おぼえがき
おぼえがき
google analyticsでtagmanagerのルックアップテーブルを使ってみる
アナリティクスのイベントトラッキングと、タグマネージャーのルックアップテーブルを利用して、レポートをみやすくする
他のアナリティクス関連
■アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
■php5.2でもgoogleanalyticsAPIを利用したい
■現状
イベントトラッキングはアナリティクスを使っていて、アナリティクスのレポート上にはクリックされたid属性がレポートに出るようになっている
■課題
レポート上視認性が悪い
Idだと、どこのことを指してるのか分からなくなる
■解決方法
タグマネージャーのルックアップテーブルを使って、和名に変換してレポートに表示するようにする。
■クリックイベントの取得方法
javascriptの中に、onclickが発生した時にjavascript上に下記を入れる
dataLayer.push({
'ClickCategory': クリック領域id名,
'ClickAction': 'click',
'ClickLabel' : 'a hrefの中身',
'event':'CCevent'
});
タグマネージャーで使用できるようになっている、自動イベントトラッキングは仕込んでいない。
古いブラウザとかjsとの相性の兼ね合いで、動かなかった。
クリックが取れないならまだいいけど、提供してるサービスの方が動かなくなったから、これは使わない。
便利そうだからって、簡単に採用する前に、しっかりテストした方がいい。
特にie。
今後もテストしなくちゃいけないコストを考えると面倒になって来たので不採用
■タグマネージャーでマクロを作る
ClickCategory
ClickAction
ClickLabel
それぞれ、データレイヤー変数を定義
あとは、こんな感じで設定

-------------------------

■タグマネージャーでタグを作る
タグ名:適当
タグの種類:ユニバーサルアナリティクス
トラッキングID:アナリティクスのID
トラッキングタイプ:
イベントをプルダウンから選択
カテゴリ:{{ClickCategory}}
操作:{{ClickAction}}
ラベル:{{ClickLabel}}
配信のルール
{{event}}含むCCevent
ってtagmanagerのタグで定義してあげれば、イベントトラッキングはできるんだけど、タグマネージャーのルックアップテーブルを使って、
ClickCategoryを和名に変換するようにする
■ルックアップテーブルの定義
マクロで下記のように新しいマクロを定義する
マクロ名を:『ClickCategoryの和名』
にする

こんなかんじで定義してあげる
で、タグの定義を下記のように変更
■タグの再定義
さっきのタグを修正
タグ名:適当
タグの種類:ユニバーサルアナリティクス
トラッキングID:
トラッキングタイプ:
イベントをプルダウンから選択
カテゴリ:{{ClickCategoryの和名}}
操作:{{ClickAction}}
ラベル:{{ClickLabel}}
配信のルール
{{event}}含むCCevent
これで、googleanalytics上の、行動->イベント->上位のイベント
のところで和名が出るようになってわかりやすくなった
ここまで、かいといてなんだが、
ClickCategoryの和名は、今はラベルに移動してある。
twitterアカウントです
アナリティクス関連
■googleAnalyticsリアルタイムAPIとiftttを使ってトレンドのtweetをやってみる
■ビーコン(BLE)とgoogleAnalyticsで交通量の測定をやってみる
■google analyticsでtagmanagerのルックアップテーブルを使ってみる
■アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
■php5.2でもgoogleanalyticsAPIを利用したい
■Google Analytics Individual Qualification(GAIQ)を取ってみた
コメント ( 0 )
アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
googleanalyticsのデータインポートについてまとめてみる。
googleアナリティクスと、カスタムディメンションと、データインポートを使って、
カスタムディメンションに定義された情報の視認性を高めるために、和名にマッピングをする
これが終わったら、アナリティクスAPIを利用してデータを引っ張ってくるところまでやる
■概要
http://xxxx.com/fdsapfokasdf
このページは、実はテニスというカテゴリーのページで、カスタムディメンションには、category:1234と定義している
http://xxxx.com/dfkasodfapsf 和名は:野球
このページは、実は野球というカテゴリーのページで、カスタムディメンションには、category:1235と定義している
下記のような感じでカスタムディメンションを定義している状態
</head>
<body>
<script>dataLayer=[{"category":"12345","yyyy":"xxxx"}];</script>
<noscript><iframe src="//www.googleta
これだと、アナリティクス上だと視認性が悪いというか、なんのカテゴリーかわからないから12345は野球みたいな感じで
マッピングテーブルを用意するといい。
<font size="5">■カスタムディメンションの定義
カスタムディメンションに
categoryとcateogry_jaの2つのディメンションを用意する。

上記のような感じで、カスタムディメンションとして、categoryとcategory_jaの2つを用意する。ここで大事なのが保存したあとのディメンションのID

上記の「11」というのが大事。後ほど、タグマネージャーで利用する定義となる。
■タグマネージャーにてカスタムディメンションの定義の追加
categoryというカスタムディメンションをタグマネージャーに認識させる必要があるため、

tagmanagerのマクロで、カスタムディメンションを定義する

タグマネージャーで、マクロの定義を行ったら、次は、タグの定義を行う
これでカスタムディメンションの定義は行えた。
■カスタムディメンションをページのソースに埋め込む
ページが表示される度に下記のように、カスタムディメンションのcategoryにページ応じたカテゴリーIDをセットする
</head>
<body>
<script>dataLayer=[{"category":"12345","yyyy":"xxxx"}];</script>
<noscript><iframe src="//www.googleta
こんな感じで、タグマネージャーで定義したカスタムディメンションに対する値がセットされるようになったら、
アナリティクス上で、
ユーザー > カスタム > ユーザー定義 に行く
セカンダリディメンションのプロダウンを選択して、先ほど定義した、cateogryというセカンダリディメンションを
選択して、データが正しく表示されていればOK
※おそらく反映には、最大30分位かかる。(気長に待つ)
※サンプリング量が多いなら、日付を今日に絞り込んでみる
※それでもダメなら、セグメントで時間を指定してみる
■データインポート処理
categoryをcategory_jaにマッピングする
アナリティクスの設定のデータインポート->「新しいデータのセット」に遷移して下記の流れで情報を登録していく
一般的なディメンションの拡張を選択


名前は、わかりやすい名前
有効なビューはマッピング対象のビューを選択
次のステップを押下

で、画面下部にある、保存を選択する。
ここで何をしてるかって言うと、
categoryというカスタムディメンションをcategory_jaというカスタムディメンションにマッピングするという定義を行ったわけ
重要なのは、ga:dimension11とgadimension4。
じゃあ、categoryとcategory_jaのマッピングテーブルをアップロードしてみる
下記のような感じ
-------------------------------------------
ga:dimension11,ga:dimension4
1234,野球
1235,テニス
1236,ダイビング
1237,マラソン
-------------------------------------------
ようは、csv形式で対応表をアップロードすればいい。
必ず、UTF-8形式で保存すること。
これで、カスタムディメンションに対する和名がセットされるようになった。
うまく行けば、
ユーザー > カスタム > ユーザー定義 に行く
セカンダリディメンションのプロダウンを選択して、先ほど定義した、cateogry_jaというセカンダリディメンションを
選択すると和名にマッピングされたデータが表示されるようになるはず。
これだけだと、なんの意味もなさないので、カスタムレポートをちゃんと作ってあげることが大事。
次は、このカスタムディメンションを利用したデータをAPI経由で取得してみる
今回は、カスタムディメンションをカスタムディメンションにマッピングしたけど、
他にも、URLの体系をカスタムディメンションにマッピングすることもできるし
使い道は様々だったりする
twitterアカウントです
■たぶんこれが一番簡単!googleAnalyticsでスクロール率を計測する方法
■googleAnalyticsリアルタイムAPIとiftttを使ってトレンドのtweetをやってみる
■ビーコン(BLE)とgoogleAnalyticsで交通量の測定をやってみる
■google analyticsでtagmanagerのルックアップテーブルを使ってみる
■アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
■php5.2でもgoogleanalyticsAPIを利用したい
■Google Analytics Individual Qualification(GAIQ)を取ってみた
コメント ( 0 )
php5.2でもgoogleanalyticsAPIを利用したい
googleanalyticsAPI(Management API(v3))を利用して、データを取得するんだけど、
PHP 5.3.0 or higher is required to use service accounts.
このエラーが出で、いろいろ面倒だったのでその対応方法も含めて記載
っていうか、phpのバージョンあげないとまずいね
■analyticsAPIを利用できるようにする
https://console.developers.google.com
アカウント:XXXXXXXXXXXX
■1日のリクエスト上限
50,000 requests/day
■analyticsAPIの利用許可設定

■認証設定

■上記画面のクライアントIDを作成をクリックすると・・・

こんな感じで、ファイルがダウンロードされる。
ファイルの中身は秘密鍵のファイル
添付の通り 16.....c42という秘密鍵のバイナリ?ファイル
秘密鍵のパスワードは、上記にあるとおり、XXXXXXXXXXX
「OK」を押下すると

クライアント / メール アドレス / 公開キー フィンガープリントこの辺めもっておく
■googleanalytics側の設定

先ほど発行されたメールアドレスを追加
これでとりあえず、設定は完了
■対象viewIDの取得
APIリクエスト対象のviewIDを取得する

■APIには利用制限が存在する
https://console.developers.google.com
ここで確認できる

■APIを叩くソースをこれより記述していく
apiを取得するためのライブラリを取得
git clone https://github.com/google/google-api-php-client.git
このディレクトリ配下のrequire_onceのパスをすべて書き換える
define("HOGE", 'google-api-php-client/src/');
require_once HOGE .'Google/Auth/AssertionCredentials.php';
require_once HOGE .'Google/Cache/File.php';
require_once HOGE .'Google/Cache/Memcache.php';
require_once HOGE .'Google/Config.php';
require_once HOGE .'Google/Collection.php';
require_once HOGE .'Google/Exception.php';
require_once HOGE .'Google/IO/Curl.php';
require_once HOGE .'Google/IO/Stream.php';
require_once HOGE .'Google/Model.php';
require_once HOGE .'Google/Service.php';
require_once HOGE .'Google/Service/Resource.php';
./Auth/Abstract.php
./Auth/AssertionCredentials.php
./Auth/Exception.php
./Auth/LoginTicket.php
./Auth/OAuth2.php
./Auth/Simple.php
./Cache/Apc.php
./Cache/Exception.php
./Cache/File.php
./Cache/Memcache.php
./Cache/Null.php
./Client.php
./Collection.php
./Http/Batch.php
./Http/CacheParser.php
./Http/MediaFileUpload.php
./Http/REST.php
./Http/Request.php
./IO/Abstract.php
./IO/Curl.php
./IO/Exception.php
./IO/Stream.php
./Service/Exception.php
./Service/Resource.php
./Signer/P12.php
./Verifier/Pem.php
上記ファイルのrequire_onceをすべて書き換えた
■php5.2対応
このままだと、Oauth2系の認証でこける
php5.3用に作られている部分もあるので、一部ライブラリの書き換えが必要
./Signer/P12.php
これがオリジナルのソースコードのメソッド
-----------------------------------------
public function sign($data)
{
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
throw new Google_Auth_Exception(
"PHP 5.3.0 or higher is required to use service accounts."
);
}
$hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
if (!openssl_sign($data, $signature, $this->privateKey, $hash)) {
throw new Google_Auth_Exception("Unable to sign data");
}
これの、openssl_signのところがphp5.2だとちゃんとうごかん
これを下記のように修正する
-----------------------------------------
public function sign($data)
{
/*
if (version_compare(PHP_VERSION, '5.3.0') < 0) {
throw new Google_Auth_Exception(
"PHP 5.3.0 or higher is required to use service accounts."
);
}
$hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256";
if (!openssl_sign($data, $signature, $this->privateKey, $hash)) {
throw new Google_Auth_Exception("Unable to sign data");
}
*/
if (!$this->my_openssl_sign($data, $signature, $this->privateKey, "sha256")) {
throw new Google_AuthException("Unable to sign data");
}
return $signature;
}
private function my_openssl_sign($data, &$signature, $priv_key_id, $signature_alg = 'sha256WithRSAEncryption') {
$pinfo = openssl_pkey_get_details($priv_key_id);
$hash = hash('sha256', $data);
$t = '3031300d060960864801650304020105000420'; # sha256
$t .= $hash;
$pslen = $pinfo['bits']/8 - (strlen($t)/2 + 3);
$eb = '0001' . str_repeat('FF', $pslen) . '00' . $t;
$eb = pack('H*', $eb);
return openssl_private_encrypt($eb, $signature, $priv_key_id, OPENSSL_NO_PADDING);
}
-----------------------------------------
ここまで
■データ取得を試してみる
#!/usr/bin/php
require_once('google-api-php-client/src/Google/Client.php');
require_once('google-api-php-client/src/Google/Service/Analytics.php');
//クライアントID
define('CLIENT_ID', 'XXXXXXXXXXXXXXX');
//メールアドレス
define('SERVICE_ACCOUNT_NAME', 'XXXXXXXXXXXXXXX');
//秘密鍵(アップロードした場所)
define('KEY_FILE', 'gaapi.ppk');
//ビューIDの定義
define('PROFILE_ID', 'XXXXXXXXXXXXXXX');
class gaBaseController
{
//--- analyticsのビューIDのセット
public $profile_id = null;
function __construct($profile_id)
{ /* {{{ */
$this->profile_id = $profile_id;
} /* }}} */
}
class ga_aaaaaa extends gaBaseController
{
function __construct($argv = null)
{ /* {{{ */
parent::__construct(PROFILE_ID);
} /* }}} */
public function main()
{ /* {{{*/
$client = new Google_Client();
$client->setApplicationName("analytics api");
$client->setClientId(CLIENT_ID);
$client->setAssertionCredentials(new Google_Auth_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/analytics'),
file_get_contents(KEY_FILE)
));
$service = new Google_Service_Analytics($client);
// ビュー ID
$ids = 'ga:' . $this->profile_id;
// 期間(スタート)
$start_date = '2014-05-09';
// 期間(エンド)
//$end_date = 'today';
$end_date = '2014-05-11';
// メトリクス
$metrics = 'ga:sessions,ga:pageviews';
// ディメンション
$dimensions = 'ga:dimension11';
// ソート
$sort = 'ga:pageviews';
// 最大取得数
$max_results = 10;
$optParams = array('dimensions' => $dimensions, 'sort' => $sort, 'max-results' => $max_results);
$data = $service->data_ga->get($ids, $start_date, $end_date, $metrics, $optParams);
print_r($data);
}
}
$obj = new ga_aaaaaa ();
$obj->main();
■カスタムディメンションの指定方法

$dimensions = 'ga:dimension11';APIでカスタムディメンションをリクエストするときにはまった
twitterアカウントです
■たぶんこれが一番簡単!googleAnalyticsでスクロール率を計測する方法
■googleAnalyticsリアルタイムAPIとiftttを使ってトレンドのtweetをやってみる
■ビーコン(BLE)とgoogleAnalyticsで交通量の測定をやってみる
■google analyticsでtagmanagerのルックアップテーブルを使ってみる
■アナリティクスでカスタムディメンションとデータインポートとタグマネージャとAPIでデータ分析をしてみる
■php5.2でもgoogleanalyticsAPIを利用したい
■Google Analytics Individual Qualification(GAIQ)を取ってみた
コメント ( 0 )