GoogleAnalyticsプラグイン JSファイル


jsフォルダ内に2つのjsファイルを置いて、
HTMLのGAコードスニペットを書くところに↓と書いてください。

あ、うまく動かなかったら、ごめんなさい。

<script type="”text/javascript”">// <![CDATA[
var gaJsHost = ((“https:== document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));
// ]]></script>
<script src="”/js/gaPlugin.js”" type="”text/javascript”"></script> <script src="”/js/gaConf.js”" type="”text/javascript”"></script>

プラグインファイル

//GA用のプラグイン
//gaGroup : コンテンツグループ設定コンフィグ
//getGroup : コンテンツグループをカスタム変数へ
//getQueryParam : パラメータをカスタム変数へ
//gaEvent : 外部リンク、DLリンクをカスタムリンクへ
//gaConv : コンバージョンのアリのユーザーをカスタム変数へ

//コンテンツグループ設定
var gaGroup = {
//グループ設定。上から順に評価される。
//正規表現でコンテンツグループを設定する

//1つ目
groupA : {
groupA : /.+sampling.+/,
groupB : /ga_test.html$/,
topPage : /^/$|^/index.html$/
},
confA : {
//スロットの設定
slot : 1,
//カテゴリ名の設定
category : "group",
//スコープはレベル3:ページレベル
scope : 3
},

//2つ目
groupB : {
test : /ga_test.html$/,
sample : /.+sampling.+/,
TopPage : /^/$|^/index.html$/
},
confB : {
//スロットの設定
slot : 2,
//カテゴリ名の設定
category : "bigGroup",
//スコープはレベル3:ページレベル
scope : 3
}

//end of gaGroup
}

//コンテンツグループを正規表現で設定して
//マルチカスタム変数へ入れる
//使用時はpageTrackerの前でnewして、set();
//_setCustomVar(index, name, value, opt_scope)
var getGroup = function(group, conf){
//コンストラクタ
this.group = group;
this.conf = conf;
}
getGroup.prototype = {
//パス名からグループを判断
get : function(){
var path = location.pathname;
var cVal = "";
for(var i in this.group){
if(path.match(this.group[i])){
cVal = i;
break;
}
}
//当てはまるものが無かった場合はotherを追加
if(cVal==""){
cVal = "others";
}
return cVal;
},

//カスタム変数にいれる
makeCVar : function(cVal){
pageTracker._setCustomVar(
this.conf.slot,
this.conf.category,
cVal,
this.conf.scope
);
},

//通常のPV取得用
set : function(){
var cVal = this.get();
this.makeCVar(cVal);
}
}

//end of getGroup

//getQueryParam
//GETクエリを見てパラメータに入れる
//コンストラクタ
var getQueryParam = function(slot, category, param, scope){
this.param = param;
this.slot = slot;
this.category = category;
this.scope = scope;
}

getQueryParam.prototype = {
//nameのクエリを返す
getQuery : function(name){
if(location.search){
var query = location.search;
query = query.substring(1,query.length);
var qArray = [];
qArray = query.split("&amp;");
for(var i=0;i
var param = qArray[i].split("=");
if(param[0] == name){
return param[1];
}
}
}
},

//カスタム変数にいれる
set : function(){
var arr = [];
var param = this.getQuery(this.param);
arr = [this.slot, this.category, param, this.scope]
pageTracker._setCustomVar(
arr[0],
arr[1],
arr[2],
arr[3]
);
}
}
//end of getQueryParam

//gaEvent
//aタグクリック時にトラックイベントへ入れる
//onloadイベント中にgaEvent.adding()でスタート
var gaEvent = {
//設定
conf : {
domain : "tanakanakana.happy888.net",       //domain名
down : {        //ダウンロード対象ファイル
pdf: /.pdf$/,
zip: /.zip$/
},
//カスタム変数を使っている場合はスロット番号を記載
customSlot : [1,2]
},

//wait関数
loopWait : function(timeWait) {
var timeStart = new Date().getTime();
var timeNow = new Date().getTime();
while( timeNow &lt; (timeStart + timeWait ) )
{
timeNow = new Date().getTime();
}
return;
},

//カスタム変数を消去
delCvar : function(){
for(var i = 0; i &lt; gaEvent.conf.customSlot.length ; i++){
pageTracker._deleteCustomVar(gaEvent.conf.customSlot[i]);
}
},

//クロスブラウザ対応のaddListenr
addListener : function(el, type, func) {
if(! el) { return false; }
if(el.addEventListener) {
el.addEventListener(type, func, false);
} else if(el.attachEvent) {
el.attachEvent('on'+type, func);
} else {
return false;
}
return true;
},

//_trackEvent(category, action, optional_label, optional_value)
tracking: function(category, action, optional_label){
pageTracker._trackEvent(category, action, optional_label);
},

//イベントバインド
bindFunc : function (bind, func){
return function(){
func.apply(bind, arguments);
//return false;
};
},

//aタグにイベント追加
adding : function(){
//aタグを取得
var atag = document.getElementsByTagName('a');
//それぞれにイベントリスナーを付ける
for(var i=0; i &lt; atag.length; i++){
var ref = atag[i].href;
//サイト外へのリンクの時
if(ref.indexOf(gaEvent.conf.domain) == -1){
gaEvent.addListener(atag[i], "click", gaEvent.bindFunc(atag[i], gaEvent.getOffsite));

//サイト内へのリンクの時
}else{
gaEvent.addListener(atag[i], "click", gaEvent.bindFunc(atag[i], gaEvent. getOnsite));
}

}

},

//サイト内リンク場合
getOnsite : function(){
var path = this.pathname;
path = gaEvent.delSla(path);
var cVar = [];
for (var j in gaEvent.conf.down){
if(path.match(gaEvent.conf.down[j])){
cVar = [j, "download",  path];
}
}
gaEvent.delCvar();
gaEvent.tracking(cVar[0], cVar[1], cVar[2]);
gaEvent.loopWait(100);
},

//オフサイトリンクの場合
getOffsite : function(){
var path = this.hostname + this.pathname;
path = gaEvent.delSla(path);
//変数名を設定 : _trackEvent(category, action, optional_label, optional_value)
var cVar = ["offsite", "offsite",  "offsite:" + path,];
gaEvent.delCvar();
gaEvent.tracking(cVar[0], cVar[1], cVar[2]);
gaEvent.loopWait(100);
},

//最初と最後に/があったら、削除
delSla : function(str){
if (str == "/"){
return "/";
}else{
str = str.replace(/^//, "");
str = str.replace(//$/, "");
return str;
}
}

//end of gaEvent
}

//gaConv
//カスタム変数に
//コンバージョンしたユーザーをTrue
//してないユーザーをFalse で設定
//_setCustomVar(index, name, value, opt_scope)
//slot,nameは任意で設定
//scopeは基本1(visitor)
var gaConv = function(slot, name, scope){
//コンバージョンのパス名を設定
this.path = ["/sampling/sample.html", "/sampling/conf.html"];
this.slot = slot;
this.name = name;
this.value = "";
this.scope = scope;
}

gaConv.prototype = {
set : function(){
for(var i = 0; i &lt; this.path.length; i++){
if(location.pathname==this.path[i]){
this.value = "true";
var val = [this.slot, this.name, this.value, this.scope];
pageTracker._setCustomVar(
val[0],
val[1],
val[2],
val[3]
);
}
}
}
}
//end of gaConv

設定用ファイル

try {
var pageTracker = _gat._getTracker("UA-XXXXX-X");

//set contents groupA
var groupA = new getGroup(gaGroup.groupA, gaGroup.confA);
groupA.set();
//set contents groupB
var groupB = new getGroup(gaGroup.groupB, gaGroup.confB);
groupB.set();
//set getQueryParam
var gq = new getQueryParam(3, "cid", "cid", 2);
gq.set();

//set get conversion
var gaC = new gaConv(4, "conv", 1);
gaC.set();

pageTracker._trackPageview();
} catch(err) {}

//get offsite, download link
window.onload = function(){
gaEvent.adding();
}

Leave a Reply