代码之家  ›  专栏  ›  技术社区  ›  Shawn Steward

如何用javascript从他们的cookie中提取谷歌分析活动数据?

  •  12
  • Shawn Steward  · 技术社区  · 15 年前

    我希望能够使用javascript提取存储在谷歌分析跟踪cookie中的所有活动跟踪信息的数据。它需要使用ga.js,而不是urchin.js与较新版本的GA配合使用。我找到了一个可以与urchin.js一起使用的方法,但我们不使用它进行跟踪。有人知道怎么提取 Campaign , Source , Medium , Content Term 从谷歌使用的cookie中?

    4 回复  |  直到 9 年前
        1
  •  7
  •   Shawn Steward    15 年前

    最后我自己解决了这个问题。我只是深入研究cookie存储和提取的信息。我想到的是:

    var ga_source = '';
    var ga_campaign = '';
    var ga_medium = '';
    var ga_term = '';
    var ga_content = '';
    var gc = '';
    var c_name = "__utmz";
    if (document.cookie.length>0){
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1){
            c_start=c_start + c_name.length+1;
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            gc = unescape(document.cookie.substring(c_start,c_end));
        }
    }
    if(gc != ""){
        var z = gc.split('.'); 
        if(z.length >= 4){
        var y = z[4].split('|');
            for(i=0; i<y.length; i++){
                if(y[i].indexOf('utmcsr=') >= 0) ga_source = y[i].substring(y[i].indexOf('=')+1);
                if(y[i].indexOf('utmccn=') >= 0) ga_campaign = y[i].substring(y[i].indexOf('=')+1);
                if(y[i].indexOf('utmcmd=') >= 0) ga_medium = y[i].substring(y[i].indexOf('=')+1);
                if(y[i].indexOf('utmctr=') >= 0) ga_term = y[i].substring(y[i].indexOf('=')+1);
                if(y[i].indexOf('utmcct=') >= 0) ga_content = y[i].substring(y[i].indexOf('=')+1);
            }
        }
    }
    

    我相信它会更流线型,但我很高兴能做到这一点。一旦你有了这些变量,你就可以用它们做任何你需要的事情。

        2
  •  4
  •   Laurence Rowe    14 年前

    我重写了这个函数,将值解析到一个关联数组中,并利用 quicksmode cookie functions :

    function parseAnalyticsCookie() {
        // inspiration from http://stackoverflow.com/questions/1688657/how-do-i-extract-google-analytics-campaign-data-from-their-cookie-with-javascript
        // readCookie is from // http://www.quirksmode.org/js/cookies.html
        // utmcsr = utm_source
        // utmccn = utm_campaign
        // utmcmd = utm_medium
        // utmctr = utm_term
        // utmcct = utm_content
        var values = {};
        var cookie = readCookie("__utmz");
        if (cookie) {
            var z = cookie.split('.'); 
            if (z.length >= 4) {
                var y = z[4].split('|');
                for (i=0; i<y.length; i++) {
                    var pair = y[i].split("=");
                    values[pair[0]] = pair[1];
                }
            }
        }
        return values;
    }
    
        3
  •  4
  •   mpz    10 年前

    现在工作:

       function extractAnalyticsData(){
          var data = {};
          var ga_source = '';
          var ga_campaign = '';
          var ga_medium = '';
          var ga_term = '';
          var ga_content = '';
          var gc = '';
          var c_name = "__utmz";
          if (document.cookie.length>0){
              c_start=document.cookie.indexOf(c_name + "=");
              if (c_start!=-1){
                c_start=c_start + c_name.length+1;
                c_end=document.cookie.indexOf(";",c_start);
                if (c_end==-1) c_end=document.cookie.length;
                gc = unescape(document.cookie.substring(c_start,c_end));
              }
          }
          data.gc = gc;
          if(gc != ""){
              var y = gc.split('|'); 
            for(i=0; i<y.length; i++){
              if(y[i].indexOf('utmcsr=') >= 0) data.ga_source = y[i].substring(y[i].indexOf('=')+1);
              if(y[i].indexOf('utmccn=') >= 0) data.ga_campaign = y[i].substring(y[i].indexOf('=')+1);
              if(y[i].indexOf('utmcmd=') >= 0) data.ga_medium = y[i].substring(y[i].indexOf('=')+1);
                  if(y[i].indexOf('utmcct=') >= 0) data.ga_content = y[i].substring(y[i].indexOf('=')+1);
              if(y[i].indexOf('utmctr=') >= 0) data.ga_term = y[i].substring(y[i].indexOf('=')+1);
            }
          }
          return data;
        };
        extractAnalyticsData();
    
        4
  •  0
  •   Community uzul    7 年前

    对于@eduardo comment的回复(关于所选答案不适用于adwords),如果您想让它适用于adwords流量,这个答案可能值得一试:

    How to capture if a visitor is from a google adwords click

    不过还没试过。