How do I extract Google Analytics campaign data from their cookie with Javascript?

后端 未结 4 1522
抹茶落季
抹茶落季 2020-12-24 15:41

I\'d like to be able to pull out the data stored in the Google Analytics tracking cookie with all the campaign tracking information using Javascript. It needs to work with

相关标签:
4条回答
  • 2020-12-24 16:01

    I ended up figuring this out on my own. I just dug into what the cookie had stored and extracted the information. Here's what I came up with:

    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);
            }
        }
    }
    

    I'm sure it could be more streamlined but I was just happy to get this far with it. Once you have these variables you can do whatever you need with them.

    0 讨论(0)
  • 2020-12-24 16:13

    I've rewritten this to parse the values onto an associative array and make use of 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;
    }
    
    0 讨论(0)
  • 2020-12-24 16:17

    With response to @Eduardo comment (about the chose answer not working for AdWords), if you'd like to make it work for AdWords traffic this answer might be worth a shot:

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

    Haven't tried it though.

    0 讨论(0)
  • 2020-12-24 16:18

    Now works:

       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();
    
    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题