ga.jsの中のtrackePageview()

ga.jsの理解メモ。わかる所からOutPutすることにします。アドバイスのある方は、指摘をお願いします。

ga.jsのオブジェクト

中にあるものを列挙する。

  • $:       windowsオブジェクトに入る。他のオブジェクトの名前空間?上の親になる
  • $.Fb:    初期値が設定されているオブジェクト。
  • $.Kb:   $.getTracker(propety-id)を呼ぶと作られる。APIを提供する。trackePageviewとか、trackeEventとか、setCustomVarとか
  • $.$:     cookie情報をマネージする。中で、$.Gbを動かす
  • $.Gb:    $.$の元で、実際のcookieの読み出し、書き込み、を行う。
  • $.Jb:    データをサーバーに送るリクエスト部分を仕事にしている
  • $.Hb:   cookieへの処理$.$に命令する。setCustomVarとかもやることになる。
  • $.m:    utmz周りの管理。$.m.wは、campaignの値をプロパティに持つオブジェクト。
  • $.n:     ecommerce周りのデータの管理。$.n.Mbとかはデータ保持用?
  • $.Eb:   システムやブラウザ情報を取得するオブジェクト
  • $.N:    trackEvent関連の処理。customVarの値にも関連する(独自にデータを送らなくなったので)

これだけ。

pageTracker._trackPageview()の流れ

順にいくと、

  1. ga.jsがloadされて、実行される。
  2. windowオブジェクトに、_gat($オブジェクト)という参照ができる。
  3. _gatには、上に挙げたオブジェクトのconstructorと、_getTrackerという関数が、プロパティとして作られる。
  4. _gat._getTracker(property-id)で、APIが定義されている$.Kbが newされ、pageTracker変数を作り参照させる。
  5. pageTrackerのAPIのひとつ、_trackPageviewを実行させる。

で、で、5の_trackPageview。大きく見ると、二つの実行式がある。ちなみに、bはpageTrackerオブジェクト。

  1. b._initData()
  2. b.Kc;

で、で、で、1の b._initData()

これは、他の多くのAPIでも、最初に呼ばれるメソッド。以前はAPIのリストに入っていたけど、今は内部で働くメソッドとして扱われている。最初に説明したコンストラクターが、あちこちでnewされている。

b._initData()の流れ。

  1. b.A = new $.Eb(); b.A.bc();
    • ここで、システム情報やブラウザ情報を取得している。
  2. b.d = b.fc();
    • ドメインチェック。setDomainName(“none”)なら、1が入る。そうでなければ、ドメインハッシュ。
  3. b.i = new $.$(c)
    • クッキーの値を管理するオブジェクトが入る。cは、$.Fbで作られる初期化オブジェクト。APIの設定をすれば、このcのプロパティに値を設定しとける。
  4. b.g = new $.N()
    • setKeyやらValueやらのメソッドが定義される。
  5. n = new $.Hb(c, b.d, b.i, b.g)
    • ここまでで、作ったプロパティの値と、c=(new $.Fb())の値を引数にして、
    • $.Hb()で、実際にcookieへの読み書きを$.$に指示する。
    • ちなみに、n.Mは、utm[abcxzv]がそれぞれ配列で入る。
  6. b.rc()
    • 中で、k = new $.Jb(c)として、送信用のオブジェクトを作っておく。
  7. b.pc()
    • ここで、セッション判定に関わる処理をする関数を呼ぶ。utma,utmb,utmcとかを見る。
  8. n.tc()
    • 5で作ったnのメソッドを実行。utmvの処理など。cookieなどへの書き込みも。
  9. b.ga = b.Yb(b.Za)
    • referral情報の取得
  10. b.Ra = (new $.m(b.d, g.ga, b.r, c)).cc(bi, b.F)
    • utmzの処理をするオブジェクトを作る。キャンペーン管理の。ccではutmzの処理が行われる。
    • 引数のb.iは、クッキー管理オブジェクトの$.$。b.Fは、新規セッションならtrue,じゃなければfalse。
  11. b.ab = new $.N()
    • new $.N()は二回目の実行(二個目のオブジェクト)。これはtrackEvent用。
  12. p = s
    • sはtrueなので、pをtrueにする。9-11はp==falseが条件。重複処理を避けるためか、initDataはあちこちで呼ばれるし。
  13. $.gb || b.sc()
    • Gasoオーバレイ関連の処理 $.gbはb.scの実行でtrueになる。一度initDataが実行されれば、b.sc()は呼ばれない。

initDataはこんな感じ。

b.Kc(a)の中

trackPageviewのもう一つの実行式のb.Kc(a)。

引数のaは、trackPageview(a)のa。pagePathをでっち上げる時に指定する引数。

短いのでコードを出す。

 b.Kc = function (a) {
   if (b.J()) {
      var d = "";
      if (b.g != w && b.g.G()[y] > 0) d += "&utme=" + T(b.g.G());
      d += b.ua(a);
      k.H(d, b.s, b.d);
   }
};

順に見てく。

  1. if(b.J())
    • これは、b.J=function(){return b._visitCode() % 10000 < c.U * 100} b._visitCodeはutmaのなかの二番目を値(sessionユニーク値)を返す。c.Uはサンプルレート。デファルトで100。なので、通常100%でb.J()はtrue。
  2. if(b.g.G(),,,,,
    • b.gは、$.Nオブジェクト。追えてない。utmeはtrackEventの値を送信するのに使われるものなので、その辺りに関係しそう。
  3. d+=b.ua(a);
    • データ送信用文字列作成。b.Aやc( $.Fb初期化オブジェクト)、キャンペーンかどうかとか(utmcr(n))など。
  4. k.H(シス情報, アカ情報, 現在時刻)
    • kは(new $.Jc()); initDataの処理の中で作られている。
    • k.H()は送信処理。$.Jbオブジェクトの中で、<img>タグを作ってDomに埋め込む作業が行われている。

これで、b.kc(a)は、終わり。

trackPageviewの処理の流れ(b.initData(), b.Kc())は、以上。

表面をなぞっただけだし、目的のセッション判別や、キャンペーンの値の処理などまで、届かなかった。

次回に、その辺りを書く。

This entry was posted in ANALYTICS and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">