Categories
GoogleAnalytics

gaPlugin.js マイナーアップデート

gaPlugin.jsをマイナーアップデートさせました。
ちょっとバグフィックスと、ちょっと機能を追加しました。

ダウンロードはこちらから
gaPlugin.js

変更点

CV -> 対象範囲をパス名までからGETパラメータ(?以下)までに変更
timeToComplete -> cookieのExpire指定がおかしかったので修正
getParam -> パラメータが無いときもデータを送信していたので、送信しないように変更
メソッド:virtualPVPlusを追加


新機能vritualPVPlus

たいした機能ではないですが、一定時間以上ページに滞在したユーザーは直帰とさせないために、バーチャルページビューでページビューを飛ばしてしまうという機能です。
GAのセッション定義とは少し変わってしまうので、完璧にセッションを管理できているわけではないですが、ほぼほぼ問題なく直帰と見なすことを防ぐことができると思います。

.virtualPVPlus(seconds)
*機能:
引数で指定した秒数後に「パス名+_時間over」というページビューを送信します。
例:「/index.html_30over」
基本的には指定した時間以上経過した人を直帰としてみなさないようにするためのものです。
そのため、セッションの最初のページでのみ、動作するようにしています。
(30分の有効期限をもったcookieで管理しています。有効期限はページが開かれる度に更新されます)

*引数:
seconds : バーチャルPVが動作するまでの時間

Categories
GoogleAnalytics

Getting Started gaPlugin.js : gaPlugin.jsの簡単な設定方法

2011/03/12修正。

gaPlugin.jsのダウンロード

gaPlugin.jsの具体的な使い方に関する説明がちょっとというか、かなり少なかったので、JSがわからない人向けに簡単な説明をしたいと思います。

ただし、Google Analyticsのカスタム変数とイベントトラッキングの最低限の知識は前提としますので、Google Codeのカスタム変数とイベントトラッキングの項目は事前に読んでおいてください。

カスタム変数 – Google Analytics

イベントトラッキングの概要 – Google Analytics

今回取得するデータ

とりあえず、今回はGAで一般的に取得できる項目に加えて以下のデータを取得できるようにしたいと思います。

  • コンテンツのグループ化
  • GETパラメータを持ったユーザー
  • コンバージョンしたユーザー
  • アクセスした曜日
  • アクセスした時間帯
  • 外部サイトへのリンク・DLリンク

設定ファイル(gaConf.js)のセッティング方法

設定ファイル:gaConf.jsで設定を行います。
それでは、お好きなテキストエディタでgaConf.jsを開いてください。デフォルトのものは日本語文字も使っていますので、文字コードに気をつけてください。デフォルトはUTF8で書かれています。

全般設定 : cnf

まずは全体の設定をします。
gaConf.jsの
cnf : {
という項目を見てください。

//全般設定
cnf : {
//アカウント名 : UA-XXXXXX-Xを入力してください。
account : "UA-XXXXXX-X",
//ページレベルでのカスタム変数のスロット名を配列形式で入力してください。
pageLevel : [1]
},

* account
まずはaccountの所のUA-XXXXXX-Xを、ご自身で取得されたGoogle Analyticsのアカウント名に変更してください。これは必須設定項目です。ここを間違えると、データがあらぬ方向へ飛んでいくので注意してください。

*pageLevel
ちょっとわかりにくいかもしれないですが、カスタム変数でページレベルの変数(scope->3)を利用しているスロット番号を記載してください。
カスタム変数はイベントトラッキングでもデータが送信してしまうので、2重送信を防ぐために、ここで設定した変数をイベントトラッキングデータ送信時に削除しています。ここで設定しないと、外部リンククリックした時も、カスタム変数で設定した値(コンテンツグループなど)がPVとしてカウントされてしまいます。
今回はコンテンツグループの箇所でページレベルのカスタム変数を利用するので、
pageLevel : [1]
としておいてください。
2つ以上利用する場合は
pageLevel : [1, 2]
などカンマ区切りで記載してください。

コンテンツグループの設定

次にコンテンツグループの設定です。
ココが一番ややこしいところだと思います。

//コンテンツグループの設定
cg : {
//コンテンツグループに利用するカスタム変数のカテゴリを指定してください。
category : "ContentGroup",
//コンテンツグループのスコープを設定してください。(デフォルト3 -> PageLevel)
scope : 3,
//コンテンツグループを正規表現で指定してください
//グループ名:/グループ定義/
pages : {
groupA : /.+sampling.+/,
groupB : /ga_test.html$/,
groupC : //test/ga//,
topPage : /^/$|^/index.html$/
}
},

*category :
category欄にはカスタム変数で送信されるカテゴリ名を指定してください。
レポートにはこのカテゴリ名が表示されます。

*scope :
scope欄はカスタム変数のスコープです。
ここを何にするのかは、実はちょっと難しい問題なのですが、とりあえずページレベル「3」としておいてください。

ちなみに、ページレベルで設定した場合は、GAレポート画面でのカスタムレポートでうまくクロス集計できないというよく分からないバグ?があります。。。。
*追記:「セッション」がおかしな値にになってしまいますが、セッション数を出したい場合は、「ユニークイベント数」を利用すれば良さそうです。

*pages :
pages欄でコンテンツグループのルールを設定します。
「グループ名」:「ルール」
という書き方で記載してください。
グループ名は自由に記載して大丈夫です(JavaScriptの予約語と被らないようにしてください)。
このグループ名がGoogle Analyticsのレポートに表示されます。
ルールは正規表現で指定することができます。
ココで記載した正規表現がルート以下のパス名(ドメイン・GETパラメータは含みません)と評価され、マッチされたもの左側に記載された「グループ名」に含まれると判断します。
(JavaScriptのlocation.pathnameと評価しています)

例えば、/products/配下全てを「product」というグループ名で纏めたい場合は
product : /^/products//,
と記載してください。
(正規表現の詳しい説明は省きます)

ここで指定しなかったURLがあった場合は、全て「other」というグループにまとめられます。

(ちなみに、別のコンテンツグループ群を作って別のカスタム変数に入れることもできます)

Getパラメータを持ったユーザー

Getパラメータを持ったユーザーをカウントするための設定は「getPar」という欄にあります。

getPar : {
//カスタム変数のカテゴリ名を指定してください。
category : "Parameter",
//スコープを指定してください(デフォルト2 -> Session Level)
scope : 2,
//取得するパラメータ名を指定してください。
paramName : "cid"
},

*category :
ここにはカスタム変数で利用するカテゴリ名を記載してください。GAのレポート画面で表示されます。

*scope :
ここで、カスタム変数のスコープを記載してください。通常はセッションレベルで利用されると思いますので、「2」としておいてください。ユーザーレベル「1」を利用することも考えられます。

*paramName :
ここに取得したいパラメータの名称を記載してください。
上の設定例では、
http://web-analytics-or-die.org/?cid=neko
というURLが表示されたとき、
「neko」という値が取得され、GAのレポート画面で表示されるようになります。

utm系のパラメータは階層化できて便利なのですが、ちょっと設定が面倒なのと、なぜか通常のヒット数を出してくれないので、これで代用することができます。

コンバージョンしたユーザー

コンバージョンユーザーの取得設定は「cv」欄で行います。

//コンバージョンユーザーの取得
cv : {
//カスタム変数のカテゴリ名を指定してください。
category : "conversed",
//スコープを指定してください(デフォルト1 -> User Level)
scope : 1,
//コンバージョンしたユーザーにつける名前を指定してください。
cvName : "conversed",
//コンバージョンとするURLを正規表現で指定してください。
urlstring : [//test/ga/index.html/, //test/ga/index2.html/]
},

*category :
カスタム変数のカテゴリ名です。他の項目と同様です。

*scope :
カスタム変数のスコープです。セッションレベルについてはGAレポート側でちゃんと設定していれば、アドバンスドセグメントで普通に追えるので、ユーザーレベルにしておいたほうが良いかと思います。ユーザーレベルにしておけば、セッションを超えてコンバージョンしたユーザーを追跡することができます。

*cvName :
コンバージョンしたユーザーにつける名前です。カスタム変数のvalueとして記録されます。

*urlString :
コンバージョンとして定義するURLを正規表現でしていしてください。
ここはパラメータも含めて評価します。

設定は以上です!
他の項目はとりあえず無視しておいてください。

トラッキングセッティング

次にgaPlugin_start.jsの設定を行います。

設定ファイル読み込み

//load configure file. Set the pathname for configure files
var gaConf1 = gaConf.conf1;
var _gaTrackName = "_firstTracker";
var firstTracker = new GaPlugin(gaConf1.cnf, _gaTrackName);
//Cross Domain Tracking Setting
//_gaq.push([_gaTrackName+'._setDomainName', '.sample.com']);
//_gaq.push([_gaTrackName+'._setAllowLinker', true]);
//_gaq.push([_gaTrackName+'._setAllowHash', false]);

ここはクロスドメイン用の設定なので、とりあえず無視しておいてください。

機能の有効化

firstTracker.contentGroup(1, gaConf1.cg);
//firstTracker.dirGroup(1);
firstTracker.getParam(2, gaConf1.getPar);
firstTracker.cv(3, gaConf1.cv);
firstTracker.weekDay(4);
firstTracker.dayTime(5);
//firstTracker.debug();

_gaq.push([_gaTrackName+'._trackPageview']);
//firstTracker.virtualPageviews(gaConf1.cg)

ここで機能を有効化します。
今回はコンテンツグループ、パラメータ、コンバージョン、曜日、時間帯を取得できるようにしますので、上記の通りにしてください。
括弧内の数字はスロット名です。1~5まで設定することができます(基本的には)。

機能の有効化は必ず
_gaq.push([_gaTrackName+’._trackPageview’]);
の前に記載してください。
_trackPageviewまでのデータが送信されます。

オンロードイベント

次に自動外部リンク取得の有効化を行います。

window.onload=function(){
//firstTracker.autoLink(gaConf1.autoLink);
firstTracker.autoLink();
//firstTracker.timeToComplete(gaConf1.timeToComplete);
//firstTracker.allowLinker(gaConf1.allowLinker);
//firstTracker.movieTrack(gaConf1.movie);
};

firstTracker.autLink(); で外部リンク・DLリンクの取得が可能になります。
こまかい設定も設定ファイル(gaConf.js)のautoLink欄で行うこともできます。
その場合は
firstTracker.autoLink(gaConf1.autoLink);
のようにして設定ファイルを読み込むようにしてください。

デフォルトでは
firstTracker.timeToComplete(gaConf1.timeToComplete);
が有効化されているので、頭に「//」を付けて機能を無効化させてください。

これでトラッキングセッティングは終了です!

HTMLページでの設定

HTML側ではタグの直前あたりで、「gaPlugin.js」と「gaPlugin_start.js」を読み込んでください。

<script type="text/javascript" src='/ga/gaPlugin.js'></script>
<script type="text/javascript" src='/ga/gaConf.js'></script>
<script type="text/javascript" src='/ga/gaPlugin_start.js'></script>

src=”パス名” といった感じで記載してください。
通常のGAコード(ga.jsの読み込みなど)もgaPlugin.js内に含まれていますので、これまでのGAコードは削除してください。
gaConf.jsonはgaPlugin_start.js内で読み込みますので、ここでは読み込み不要です。

これで設定完了です!!
そんな難しくないはず!!

Categories
GoogleAnalytics

Google Analytics機能拡張プラグイン gaPlugin.js version2を公開します。

以前、微妙に公開していましたが、かなり使いづらい状態だったので、特にインターフェイス周りを整理し直して、バージョンアップをしました。
今回のバージョンアップでようやく実用レベルにはなったと思います。

gaPlugin.jsのダウンロード
(githubに移行しました)

*注意:
まだベータ版です。利用は自己責任でお願いします。
利用は自由ですが、商用で利用される場合はご連絡いただけると助かります。
追記: とりあえずMITランセンスにしておきます。

特徴

・データ取得機能の強化
Google Analyticsに不足している機能を気軽に補完することができます。
外部サイトリンクのクリック数や曜日別のセッション数など、あると便利なデータを簡単に取得できるようになります。

・複数アカウントの対応
GAが対応している複数アカウントをサポートしました。
2つ以上のアカウントを使って自在にデータを取得することができます。
例えば、1つ目は通常のページビューを取得し、2つ目はグループ化したページビューを取得するということができます。
当然、1アカウント5個までと制限されているカスタム変数も、2アカウントなら10個使うことができます。

・柔軟なカスタマイズ
GAがサポートする範囲内であれば、柔軟にカスタマイズすることができます。
例えば、5個のカスタム変数全てをコンテンツグループに利用することもできます。
通常の_setCustomVarを利用して、個別にカスタム変数を利用することも可能です。

・プラグインを一切使っていません
jQueryやprototype.jsなどのプラグインを一切使わずに作成しています。
シンプルな設計になっているので、プラグインを使った場合と比べて、高速に動作するはずです。また、プラグイン同士の衝突も回避できます。

・設定ファイルで一括管理
基本的に機能を全て設定ファイルで管理するので、各ページごとに異なったタグを入れる必要がありません。全ページ同じタグで簡単に導入することができます。
(一部例外あり)

機能一覧

・外部サイトリンク、ダウンロードリンクの自動取得
外部サイトのクリックや、ファイルのダウンロードクリックを自動的に取得することができます。もうaタグ内にonClick=~なんて書く必要がありません。

・コンテンツグループの設定
コンテンツをグループ化して取得することができます。
通常のレポートでは不可能だったグループ別のセッション数を取得することができます。

・タスク終了までの時間取得
あるページの表示から、あるページの表示までにかかった時間を取得できます。
例えば、フォームの入力ページの表示から、入力完了ページまでの時間を取得できます。

・ムービー閲覧時間の取得
15秒おきにカスタムイベントリクエストを送信することによって、ムービー等の閲覧時間を取得できるようになります。
当然直帰したユーザーも含めた滞在時間が取得できます。

・グループ化バーチャルページビュー
通常のtrackPageviewsの代わりに、コンテンツグループを利用することができます。
コンテンツグループをページビューとみなすことによって、GAのパス解析機能を使うことが可能です。
つまり、あるコンテンツグループの次に見たグループ、ランディングとなったグループなどを追跡できます。
複数アカウント利用と組み合わせると強力な機能になります。

・コンバージョンしたユーザーの特定
コンバージョンしたユーザーを追跡することができます。
GAレポート画面上でもコンバージョンした追跡することは可能ですが、カスタム変数を使っているため、セッションを越えたユーザー単位で追跡することができます。

・パラメータ取得
指定したパラメータを持ったURLを表示すると、そのパラメータの値を取得します。
キャンペーン等の簡易取得に利用できます。

・ディレクトリグループ
コンテンツグループは設定するのが面倒という人には、トップディレクトリをコンテンツグループとして設定することができます。

・_link の自動設定
クロスドメイン解析に必要な_linkも自動的に設定することができます。
それぞれのリンクにonClick~と書く必要はありません。

・曜日の取得
曜日を自動的にカスタム変数に格納します。
曜日別にデータを見ることが可能になります。

・時間帯の取得
朝、昼、夕方などページが見られた時間帯を自動的に取得します。

利用方法

A. 動作ファイル(gaPlugin_start.js)の記述
1. コンフィグファイルの読み込み
var gaConf = loadJson(“/test/ga/js/gaConf.json”);
コンフィグファイルのパスを指定してください。
JSONファイルを読み込みます。

2.トラックネームの設定
var _gaTrackName = “_firstTracker”;
マルチアカウントトラッキングに必要なトラッカーの名称を設定します。
名称はどんなものでも構いません。

3.計測用オブジェクトの作成
var firstTracker = new GaPlugin(gaConf.cnf, _gaTrackName);

4.各種設定
クロスドメイン用の設定など各種設定してください。

5.機能のON
利用する機能を定義してください。

6.trackPageview
データを送信します。
_gaq.push([_gaTrackName+’._trackPageview’]);
メソッド:virtualPageviewsを利用することもできます。
(併用はできません)

7.onloadイベントの設定
autoLinkなどonloadイベントを設定します。

8.2つめのアカウント設定
複数アカウントを利用する場合は、2つめ以降のオブジェクトを生成してください。
方法は1-7と同様です。

B.HTMLファイルへの記述
gaPlugin.jsと動作ファイル(gaPlugin_start.js)を読み込んでください。

 <script src="/js/gaPlugin.js" type="text/javascript"></script>
 <script src="/js/gaPlugin_start.js" type="text/javascript"></script>

gaPluginのAPI

API一覧
new
.contentGroup
.dirGroup
.getParam
.cv
.dayTime
.weekDay
.virtualPageviews
.autoLink
.timeToComplete
.allowLinker

——————————–
new (conf, trackName)
*機能:
計測用オブジェクトを作成します。

*引数:
conf : 全般設定のコンフィグ
trackName : 任意の文字列

*confCgの形式:

    //全般設定
    cnf : {
    //アカウント名 : UA-XXXXXX-Xを入力してください。
        account : "UA-XXXXXX-X",
    //ページレベルでのカスタム変数のスロット名を配列形式で入力してください。
        pageLevel : [1]
    },

——————————–
.contentGroup(slot,confCg);
*機能:
設定ファイルに記載したURLルールに基づいて、コンテンツをグループ化します。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)
confCg : コンテンツグループのコンフィグ

*confCgの形式:

    //コンテンツグループの設定
    cg : {
        //コンテンツグループに利用するカスタム変数のカテゴリを指定してください。
        category : "ContentGroup",
        //コンテンツグループのスコープを設定してください。(デフォルト3 -> PageLevel)
        scope : 3,
        //コンテンツグループを正規表現で指定してください
        //グループ名:/グループ定義/
        pages : {
            groupA : /.+sampling.+/,
            groupB : /ga_test.html$/,
            groupC : //test/ga//,
            topPage : /^/$|^/index.html$/
        }
    },

——————————–
.dirGroup(slot);
*機能:
トップディレクトリでグループ化します。
ルートディレクトリの場合は「top」となります。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)

——————————–
.getParam(slot, confPar);
*機能:
設定ファイルに指定したパラメータを持っている場合、その値をカスタム変数に保存します。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)
confPar : コンテンツグループのコンフィグ

*confParの形式:

    //GETパラメータの取得
    getPar : {
        //カスタム変数のカテゴリ名を指定してください。
        category : "Parameter",
        //スコープを指定してください(デフォルト2 -> Session Level)
        scope : 2,
        //取得するパラメータ名を指定してください。
        paramName : "cid"
    },

——————————–
.cv(slot, confCv)
*機能:
設定ファイルに指定したURLのページを閲覧したとき、コンバージョンユーザーとして定義することができます。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)
confCv : コンテンツグループのコンフィグ

*confCvの形式:

    //コンバージョンユーザーの取得
    cv : {
        //カスタム変数のカテゴリ名を指定してください。
        category : "conversed",
        //スコープを指定してください(デフォルト1 -> User Level)
        scope : 1,
        //コンバージョンしたユーザーにつける名前を指定してください。
        cvName : "conversed",
        //コンバージョンとするURLを正規表現で指定してください。
        urlString : [//test/ga/index.html/, //test/ga/index2.html/]
    },

——————————–
.dayTime(slot);
*機能:
アクセスした時間帯を記録します。
0時-5時:late night
5時-9時:early morning
9時-12時:morning
12時-15時:after noon
15時-18時:evening
18時-21時:late evening
21時-24時:night
として、定義されます。
ユーザー側の時間が記録されるため、時差がある場合はサーバー側と異なる時間帯が記録されます。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)

——————————–
.weekDay(slot);
*機能:
アクセスした曜日が記録されます。
ユーザー側の時間が記録されるため、時差がある場合はサーバー側と異なる曜日が記録されることがあります。
カスタム変数を利用します。

*引数:
slot : カスタム変数のスロット番号(1-5)

——————————–
.virtualPageviews(confCg);
*機能:
コンテンツグループをページビューとして、カウントします。
通常の_trackPageviewと併用できません。

*引数:
confCg : コンテンツグループのコンフィグ
(形式は.contentGroupの設定と同じです。)

—————————-
.autoLink(confLink)
*機能:
外部サイトへのリンク、DLリンクを自動的に取得できるようになります。
カスタムイベントを利用します。

*引数:
confLink : オートリンクのコンフィグ
(省略することができます)

*confLinkの形式:
    //オートリンクの設定
    autoLink : {
        //除外するドメイン名を配列で指定してください。
        internalDomain : ["www.sample.com"],
        //
        category : {
            offSite : "OffSiteLink",
            download : "DownLoadLink"
        },
        //取得するDLファイルを設定
        dlFiles : {
            emailLink : /^mailto:(.+)$/i,
            pdf: /^(.+.pdf)$/i,
            zip: /^(.+.zip)$/i,
            PowerPoint: /^(.+.pptx?)$/i,
            Excel: /^(.+.xlsx?)$/i,
            Word: /^(.+.docx?)$/i
        }
    },

—————————-
.timeToComplete(confTC)
*機能:
設定ファイルに記載したスタートページを表示してから、終了ページを表示するまでの時間をカウントします。
カスタムイベントを利用します。

*引数:
confTC : timeToCompleteのコンフィグ

*confLinkの形式:
    //timeToCompleteの設定
    timeToComplete : {
        //カスタム変数のアクション名を指定してください。
        action : "timeToComplete_TEST",
        //計測開始URLを配列で指定してください。
        startUrl : [/ga/start1.html$/, /ga/start2.html$/],
        //計測終了URLを配列で指定してください。
        endUrl : [/ga/end1.html$/, /ga/end2.html$/],
        //利用するcookie名を指定してください。
        cookieName : "_utmTimeToComp"
    },

—————————-
.allowLinker(confLinker)
*機能:
クロスドメインサイトの取得に必要な_linkを自動的に設定します。
_setAllowLinkerをtrueにしておく必要があります。
aタグのみ対応しています。
formタグでのPOSTによるサイト遷移については対応していません。

*引数:
confLinker : allowLinkerのコンフィグ
*confLinkerの形式:

    //Cross Domain用Trackingの設定
    allowLinker : {
        //許可するサイトのURLを指定してください。
        allow : ["www.sample.co.jp", "www.sample2.co.jp/"]
    }

——————————–