カスタム変数を使用して、セッションスコープでユーザータイプを追跡しようとしています。ページの読み込みごとに、GA変数が存在するかどうかを確認し、存在しない場合は、Cookie(ビジター、レジスター、プレミアム)に基づいて3つの値のいずれかに設定します。
TrackUser: function () {
var index = 5; //slot 5
var scope = 2; //set scope to session level
var key = "UserType";
var value;
if (_gaq != undefined) {
_gaq.push(function () { //this is async
var pageTracker = _gat._getTrackerByName(); //Gets the default tracker.
var vis = pageTracker._getVisitorCustomVar(5); //this should return the 'usertype' if its been set
//if no GA variable exists then lets set it
if (vis == undefined) { // !? THIS IS ALWAYS 'undefined' ?!
value = getUserType(); //get the users type
//send custom var to GA
_gaq.push(['_setCustomVar',
index, // This custom var is set to slot #1. Required parameter.
key, // The name acts as a kind of category for the user activity. Required parameter.
value, // This value of the custom variable. Required parameter.
scope // Sets the scope to session-level. Optional parameter.
]);
}
});
}
}
この関数は、トラックイベントプッシュ'_trackEvent'の直前に呼び出されているため、'_trackEvent'が呼び出される前に終了していない可能性があります。それでも、次のページの読み込み時に送信されませんか?
または、GAがカスタム変数でCookieをどのように使用するかを誤解していますか?
ところで:カスタム変数を取得する簡単な方法がある場合(おそらくGoogleにリクエストを送信する必要なしに)、それは理想的です。
アップデート
さらにドキュメントを読むと、「_ getVisitorCustomVar」は「ビジタースコープ」に設定されている場合にのみカスタム変数を返すことに気付きました(3)。Googleは、サーバー上の「セッションスコープ」(2)変数を追跡しているようで、クライアント側のCookieを設定していません。より洗練された解決策が見つかるまで、自分のセッションCookieを設定して、ユーザータイプに関する情報をGAに送信したかどうかを確認しています。