ga.js の勉強
ga.jsについて
ほとんど、分かってないけど、書く。
1. googleにhostされているga.jsをファイルをgetする
2. 展開されたga.jsは、windowオブジェクトに、_gatプロパティをくっつける
3. _gat.getTracker("UA-xxx-y")で、APIが公開されているオブジェクトを生成する。
4. それを使う。 TrackpageView()で、デ-タ送信(Gif-request)を行う。
送られるデ-タは、
http://code.google.com/intl/ja/apis/analytics/docs/tracking/gaTrackingTroubleshooting.html
にある。
cookieのデ-タなどは、utmccで送られる。utmccは新規campaign、utmcrは継続しているcampaign?
後は、e-commerce用のデ-タを送るものもある。Gif-requesteがcacheされないように個別のIDも振られている。
ga.jsのなか
難しい文法は使われてない(prototype, applyとか)ので、根気されあればと思うけど、一字の変数が大量に並んでいるので、苦しい。
大まかな概略は、 _gatオブジェクトが定義されて、
Fという変数に_gatは代入され、そこでさらに、いろいろなプロパティが追加される。
そのプロパティには、いろいろなconstructor関数が定義されており、
それらが、new F.hogeみたいな形で、いろんなオブジェクトが追加されている。
最初に呼ばれるのは、F._getTrackerで、 new F.qc(g, l)がreturnされる。
この返却値(pageTracker変数とする)には、いろいろなAPI(underscoreで始まるもの)が定義されており、それをユ-ザは使う。
元々の_gatオブジェクトで、定義された値なども、pageTrackerから引き出すようになっている。
API?でなくとも引き出せる。 検索エンジンの一覧などは、pageTracker.xd().Laなどで引き出せる。でも、APIから操作しないと想定しないエラ-になりそう。xd()で返されるオブジェクトには、windowオブジェクトへの参照もある。
InitDataは、デ-タを整形を整形するところ?
F.pc.l.Vで、デ-タ送信をしてる。google にデ-タを飛ばしながら、自分のところに、同じデ-タを飛ばすことも可能だが、二次利用?はたぶん規則に触れるような気がする。
Google Analytics の Cookieについて。(理解度6割)
FirstClass Cookieのみを読み込む。ThirdPatyのものは使わない
serverは、自分のdomainに対して設定されたcookieとしか読めない。 ただ、通常のhttp通信だけでなく、画像の配信でもやりとりができる。それを使って画像を配信するサ-バ-とその画像を受け取ってるbrowserと通信する方式がサ-ドパ-ティcookie。 これを使えば、横断的に情報を集められる。
google analyticsでは、thirdparty cookieは使わない。ユ-ザのプライバシ-に配慮しているという方針。だが、すごい情報を集めてるとは思う。
使われるcookieの種類
utma, utmb, utmc, utmv, utmz, utmxの5つがある。utmxはweb optimiser用。残りの4つについて書く。<domain….>の<>の中の名前は、僕が勝手につけた。
utma(visitor identifier cookie)
値 <domain-hash><unique-visitor-id><birth-time><previos-time><current-time><num-of-visits>
domain-hashは、domain名をhashにしたもの。virtualPageviewを使った場合は、1とかになるunique-visitor-idが、新規訪問者とされた場合に、一意に割り当てられる。残り3つ(previous-time, current-time, num-of-visits)は、セッション毎に値が更新される。
utmb, utmc(session management cookie)
値(utmb) <domain-hash><pv of this session>10<birth-time>値(utmc) <domain-hash>
utmc, utmbの二つで、googleがそうだと決めたセッション(visit)を管理する。bは30分, cはブラウザが生きてる間、そのcookieは維持される。また、新規リクエストの際に、相棒がいないと、二人共、新規に生まれ変わり、新しいsession(visit)となる。二人ともいなければ、当然、新しいsession(visit)。
* 重複説明
ブラウザと閉じるか、30分間なにもrequestが発せられないと、セッションは終わる。utmbは30分間を消滅し、utmcはブラウザが閉じられると消滅する。どちらかがなければ、新しいセッションとなり、共に作り直される。pv of this session、これでpvを計っているのかな?
<birth-time>は、request毎にrefreshされる。その時に、古いものと新しいものの時間の差を滞在時間にする?値にある、10の数字は、outbound linkがclickされるのを計っているらしい。 今のところ関係ない数字。
utmv(Visitor Segmentaion cookie)
値: apiにある、_gat.getTracker("UA-xxx-y")._useVar("XXXX")の、XXXXになる。userにnameを付け, レポ-トで、ユ-ザ>ユ-ザ定義で現れる名前になるもの。sessionをまたいで生きる。
* 例
login時にsetVarで名前を設定する。その後、そのuserがrevisitしたとしても、Utmvの値は変わらない。なので、レポ-ト側で見ても、同じ名前で定義されたユ-ザである。2年間の命。requestが有る度に二年間の命にrefreshされる。
* おまけ
utmv の vは VisitorのV?それとも、setVarのV?
utmz (Campaign tracking cookie)
値 :
<domain-hash><birth-time><num of session><num of campaign session>
+
{
- utmcsr source 流入経路 (google.com, yahoo.co.jp, refferal-site.comとか)
- utmccn campaign 種類 ( referral, direct, organic, )
- utmcmd medium 流入媒体 (organic, none, )
- utmctr keyword キ-ワ-ド (hoge%20bar,)
- utmcct ad_content 広告を特定するもの( pathとかになる?)
}
セッション事に産まれる。更新される。utmc??の??部分の値は、referalのquery部分の値からsetされる。apiをadwordsのキャンペ-ンでなくとも、実行される。
*留保1
(num-of-session) - (num-of-campaign-session) = direct visits
だと思うのだが、
実際のcookieを自分のbrowserでのぞくと、num-of-session < num-of-campaign-session の場合がある。何か間違って理解しているみたい。
*留保2
最初のutmzが作られてない時,directでのアクセスがあると、utmzは作られないのか?その後、campaignを開始して流入してきた場合、それまでのセッション数が、num-of-sessionに反映されるのか。
google analytics 複数ドメイン間でのデ-タ共有
主に、cross-domain(ドメイン名が違う場合,hoge.comとbar.com)と、multi-sub-domain(a.hoge.com, b.hoge.comなどという場合)
の二つがconversion universityで解説されている。
1.cross-domainの場合
まずは、共有するサイトのどちらにも,埋め込むコ-ドを少し変える。
- setDomainName("hoge")で、共通のドメイン名を付ける
- setAllowLinker(true)で、デ-タを引き継ぎながらリンクをさせる許可をさせ、 _link(), _linkByPost()で実際に画面遷移をさせる
2. sub-domainの場合
- cross-domainの時にように、_setDomainName(“.hoge.com”")と共通名を付ける。 ". + 親ドメイン名" の形のドメイン名がわかりやす
- プロファイルを複数用意する(メイン + サブドメインに対応したもの)
メインのプロファイルをコピ-して、サブドメイン用のものを作り、filterで分ける
* requestURIがsub-domain間で重複する問題に対しては、filterでoutputにdomain名も含めるように変える。
* multi-domain + sub-domainの場合
_setAllowLink(true)
_setAllowHash(false)
とする。
google analytics how many sessions a user spent
visitorを元にした訪問回数の出し方
google analyticsでは、ユ-ザ- > リピ-ト訪問数 > リピ-トセッション数で、繰り返されたセッションの数というものが出る。これはvisitor(ユ-ザ-)が今までに何回サイトを訪れたか? を示す数値になっている。
しかし、この数値(グラフ付きで出る)は訪問回数別になっていない。具体的に言うと、新しいセッションが始まるたびに、記録された訪問回数がカウントされ集計された数字になっている。なので、ユニ-クユ-ザ-数とセッションが一回のユ-ザ-数が、ユニ-クユ-ザ-全体の数値になっている。
なぜ、このような出し方をしているのか、僕にはよく分からない。ユ-ザ-毎の訪問回数にした方が、ユ-ザ-のアクセスをイメ-ジしやすいと思う。ついでに言うと、9回以上の数値については、9-14, 15-25, 26-50, 51-100という範囲でまとめられている。これも、僕にはよくわからない表示の仕方に見える(アクセスの多いサイトだとこういう表示が便利にはなるのだろう)
とにかく、表題の通り、visitorを元にした訪問回数という形で、一旦は数値として出したい。
そこで、APIを利用して数字をだしてみた。 http://code.google.com/intl/ja/apis/analytics/docs/gdata/gdataExplorer.html (ここで試行錯誤するのが勉強になると思う。)
dimentions : date(日付), countOfVisits(何回目の訪問か)
metrics : visits(セッション数)
という形で、デ-タを引っ張ってみた。
dimentionとmetricsは、”Dimention当たりのmetricsの数値を見る” というイメ-ジ。
あるサイトでは、SQLのgroup_byがdimentionで、selectがmetricsという例えをしていた。metricsをdimenstionで集計するという感じ。
なぜか、Visitsの数が増えているcountOfVisitsがある。理由はよくわからない。デ-タの取得時にエラ-があったのか、一度analyticsのfilterをいじったので、デ-タが抜け落ちたのか、それとも僕の数値の見方に勘違いがあるのか? わからないけど、とりあえず、出した。
最大で、99回目のセッションがあるけど、当然これは僕自身のアクセス(僕だけで、10近くのユニ-クユ-ザをもってしまっている、chromeで5, firefoxで3, IEで2くらいだったか) なので、実際のアクセスは25くらいになる。
右端のdiff が 訪問回数(左端)によるユ-ザ分布になる(はず)。真ん中は計算過程の数字になる。
デ-タが少ないので、意味のある情報にはなってない。
ga:countOfVisits?,ga:visits?,diff
1,35,18
2,17,5
3,12,3
4,9,1
5,8,0
6,8,3
7,5,1
8,4,0
9,4,0
10,4,1
11,3,0
12,3,0
13,3,0
14,3,0
15,3,1
16,2,0
17,2,-3
18,5,2
19,3,1
20,2,0
21,2,0
22,2,0
23,2,0
24,2,0
25,2,0
26,2,0
27,2,0
28,2,-1
29,3,1
30,2,0
31,2,0
32,2,0
33,2,0
34,2,0
35,2,-2
36,4,2
37,2,0
38,2,0
39,2,-3
40,5,3
41,2,-3
42,5,0
43,5,2
44,3,2
45,1,0
46,1,0
47,1,0
48,1,0
49,1,0
50,1,0
51,1,0
52,1,0
53,1,0
54,1,-2
55,3,0
56,3,0
57,3,1
58,2,1
59,1,0
60,1,0
61,1,-1
62,2,1
63,1,0
64,1,0
65,1,0
66,1,0
67,1,0
93,1,0
94,1,0
95,1,0
96,1,0
97,1,0
98,1,0
99,1,-233
計,234,234
google analytics の pageTracker._link
googlenのhelpに、cross domainの場合に、単一のprofileでデ-タを追う場合の方法があって、
http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55503
この通りなんだけど、英語なので、すっ飛ばして読んで、
<a href=”www.hoge-next.com” onclick=”pageTracker._link(this.href);return false;”>hoge-next</a>
のところだけいれると、linkにfollowされない。
<a>タグは、クリックされると、onclickにある処理を実行して、次にhrefにある処理を実行する。
で、上記の記事 の1のcode(pageTracker._allowLink(true))をいれとかないと、pageTracker._linkは想定した通りの処理をしない。単に、undefinedが返るだけ。
想定された処理の場合は、linkが実行されるので、あとは実行されない。
そうでない場合は、何かがおかしいので、linkを実行させない(href属性を実行させない)ように、onclickにreturn falseを入れておく。そうすると、linkを実行されない。
なので、なんらかの問題が合った場合に、href属性を実行させたくない場合は、return falseをいれとくのがいい。
実行させたい場合は、 そのままにしとく。 return falseは書かないでおく。