Google AnalyticsのAPIの説明をしながら解説してみたい。
まず、Google Analytisはfirst party cookieを使ってデータを取得・送信している。first-party cookieとは、個々のドメインに対して機能するものなので、違うドメインのcookieとは、連携する事はできない。(行動ターゲティングなどは、画像一つ一つがドメインとなれる事を利用して、複数ドメインでのユーザーの行動追跡を可能にしている、たぶん)
とにかく、データ収集範囲は、ドメインに限定される。
(2010/03/07 cookieの値に関する限りです。google analyticsは、web property IDが同じなら、サイトが違っても、同じレポート上のデータとして扱う)
が、ドメインを超えて、データを収集したい。そこで、Google Analyticsでは、URLにデータを乗せて(post送信もURLにくっつく形)、遷移した別のドメインで、そのデータをga.jsが読み書きするになっている。
これを行うAPIは、_link, _getLinkerUrl , _linkByPost 3つ。同時に、_setAllowLinker(true)が、この3つが機能させるフラグ、trueで機能する、デフォルトはfalse。
また、_ga.jsの中で、ドメインの相違をcheckしているので、それを外すのが_setDomainName()。この引数には、デフォルトで “auto”(そのページのドメインが使われる) “none”(ドメインハッシュを1にする), または、自分で任意の文字列をドメインとして設定することもできるよう。
また、_setAllowHashというものもあり、引数をfalseにすると、ドメインハッシュを行わず、checkも行わない。よって、cookieのドメインcheckをせず、複数ドメインに対応可能になる。又、domain-hashをしないので、実行効率もあがるらしい。
サブドメインの間でデータを取る場合に、_setDomainName(“.sub.hoge.com”)のように、頭に ” . “ を書く事が推奨されているけど、この理由はよくわからない。これは、sub-domain共通でデータを取得してますというのを、わかりやすくするのが理由だろうか?
(2010/03/07 cookieは、.hoge.com のように書くと、サブドメイインでの値の共有になるとの事)
cookieの値の受け渡しができれば、ドメインハッシュ値を同じにして、ga.jsでのdomainチェックを通し、データを送信でき、複数ドメインでのデータを同じプロファイルで扱えることになる。
Iframeでも同様。Iframenも平行してアクセスがあると考える(ページ遷移などでレポートされる遷移の順番は、utmbの番号などを見れば、いいだろうか?)
また、注意するべき点として、setDomainNameは、できるだけ早い順番にかくべき。pageTracker変数を作った後に。_setVarなど(もう廃止項目だけど)を使う場合に、setDomainNameでドメインをそろえてないと、変更前のドメインとなるので、trackePageviewに反映されない。(_setVarの変更でリクエストは飛ぶけど、これも_setCustomVarだと飛ばないよう)なので、
- var pageTracker = _gat._getTracker(“UA-XXXXXX-11”)
- pageTracker._setDomainName(“none”);
- pageTracker._setAllowLinker(true);
- pageTracker._setVar(“hogehoge);
- pageTracker._trackPageview();
この順番で試したら問題なく、utmvの値も引き継げた。また、htmlの中のリンクに直接 pageTracker変数を使う(<a>タグのonclickなどで)なら、bodyの頭に、上記のコード(1-5)を入れる必要がある。
しかし、外部リンクにいちいち、pageTrackr._linkerなどと書いていくのは、実用上無理がある気がする。めんどくさい。
ので、下の記事にも書いたけど、一括でEventListenerに登録する方が漏れが少ないと思う。google analytics 外部へのリンクを計測する