Google Analyticsは無償で利用できる便利なアクセス解析ツールだが、外部アクセスを記録するためには工夫が必要だ。
Google Analyticsに限らず、自分の管理しているサイトより外部のサイトへのアクセスをトラッキングするためには、いくつかの方法がある。すぐに考え付くのは以下の2つだ。
- aタグのhref属性に自分のサイトから外部サイトへリダイレクトさせるようなURLを記述する
- aタグのclick属性に自分のサイト(もしくはGoogle Analyticsのような解析サイト)にリクエストを呼ばすように記述する
前者は簡単に測定することができるが、利用者のリテラシーによってはそのままURLをコピペされてしまい、ブログに引用されてしまうなどの事故が考えられる。さらに検索エンジン等への振る舞いも良くないかもしれない。
後者の方法はhref自体は変更しないため比較的安全である。例えばgoogleでも検索結果のリンクに対して押されたかどうかを収集するようにしている(このことはgoogleの検索結果のリンク上で右クリックすると分かる)。
前者も後者も、HTML文章を変更する必要があるため、Google Analyticsのように指定のタグを追加するだけの簡単さではない。
そこでnoriaki氏によってWe Ain’t Seen Nothin’ Yet. : Google Analyticsに自動で外部リンクへの移動もトラッキングさせるようにするJavaScriptライブラリ「ga-external.js」が製作されている。
このga-external.js(とprototype.js)をincludeすることによって、自動的にaタグを探し、click属性を書き換えてくれる。
このga-external.jsを利用しようとしたが、上手くいかない。コードを読んで調べてみると、
if(typeof urchinTracker != 'function') return;
および、
urchinTracker(_ga_elm_href.join('').escapeHTML());
の部分がAnalyticsと関係あるように見える。前者でAnalyticsのスクリプト読み込みを確認し、後者でクリックが合った場合にAnalyticsへのリクエストを飛ばしている。
このurchinTrackerは、外部へのリンクのクリックをトラッキングするにはどうすればよいですか。 – Google Analytics ヘルプ センターによると、古いバージョンのトラッキングコードとされているようだ。新しいバージョンではpageTrackerを利用するらしい。
そこで、前者のコードをコメントアウトし、後者のコードを
pageTracker._trackPageview(_ga_elm_href.join('').escapeHTML());
とすることで解決を図った。
FirefoxのLive HTTP headersでリクエストが呼ばれているか確認する場合は、後者のコードの後に
window.alert(_ga_elm_href.join('').escapeHTML());
を追加すると、遷移先のページが呼ばれるまでの待機時間を作ることができるので、確認が楽になる。
リクエストが飛んでいる様子は見えているが、まだAnalyticsで確認はしていない。