Google Analyticsのイベントトラッキング


Google Analyticsでページ単位ではなく、ページ内のアクション等でイベントを記録する方法を調べてみました。
ついでに、今時onclickイベントをHTML内に記述するのはダサいので、外部JSで実装しました。
通常は以下のように、scriptタグを適当な位置に記述します。スクリプト関係は、ロード時間の関係上、一般的にページの最下部に設置します。

<script type="text/javascript">
 
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
  _gaq.push(['_trackPageview']);
 
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

そして、イベントを取得したい要素にonclick属性などを追加します。

<a href="#home" onclick="_gaq.push(['_trackEvent', 'カテゴリ名', 'アクション名','ラベル名', 値]);" >home</a>

カテゴリ名、アクション名は必須項目です。ラベル・値はオプションです。

HTML

<a class="home" href="#">Home</a>
<a class="drink" href="#drink">Drink</a>
<a class="food" href="#food">Food</a>
<a class="access" href="#access">Access</a>
<a class="gallary" href="#gallary">Gallary</a>

JavaScript

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push(['_trackPageview']);
...
$(document).ready(function(){
	...
	$('a.drink').click(function(){
		_gaq.push(['_trackEvent', 'nav', 'pageMove', $(this).attr('href')]);
		return false;
	});
	...
	(function() {
		var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
	})();
});

問題がなければ、Google Analyticsの左メニューの「コンテンツ」「イベント」に表示されるようになります。上記の場合、ナビゲーションのページ移動をJSで制御し、href属性をそのまま記録するようにしています。一番上の画像を確認してみてください。

応用すれば、どんなタイプのイベントにも設定する事ができるので、ファイルのダウンロードカウント、Twitter/Facebookのアクション、ページの最下部まで読んだか(どこまで読んだか)、A/Bテストなんかにも使えますね。

そういったログ系の出力をGoogle Analyticsに任せられるというのは利点です。