如何检查是否设置了Google Analytic自定义变量(会话范围)

时间:2012-09-24 17:41:38

标签: javascript google-analytics

我正在尝试使用自定义变量跟踪会话范围内的用户类型。在每个页面加载时,我想检查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?

BTW :如果有更简单的方法来获取自定义变量(可能无需向Google发送请求),这将是理想的选择。

更新

在阅读了更多文档后,我意识到“_getVisitorCustomVar”只有在“访问者范围”(3)中设置时才会返回自定义变量。谷歌显然在他们的服务器上跟踪“会话范围”(2)变量,并没有设置客户端cookie。在我找到更优雅的解决方案之前,我只是设置自己的会话cookie来检查我是否向GA发送了有关用户类型的信息。

2 个答案:

答案 0 :(得分:2)

只能从googles API调用_getVisitorCustomVar

获取“访问者范围”值

答案 1 :(得分:0)

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'xxxxxxxxxxxxxxxx']);

   _gaq.push(function() {
        var pageTracker = _gat._getTrackerByName();
        var userTypeVar = pageTracker._getVisitorCustomVar(1);
        if ( userTypeVar == 'Guest' ) {

        }
    });

  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();