/ Published in: JavaScript
for accessing all the values in the GA cookies. I\\\\\\\'ve used this to track a session ID into Kiss Insights and also into GA on a custom variable so that Kiss Insights responses can be brought in against GA data.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
/** * @author: Danny Ng (http://www.dannytalk.com/2010/08/19/read-google-an�¢ï¿½�¦-cookie-script/) * @modified: 19/08/10 * @notes: Free to use and distribute without altering this comment. Would appreciate a link back :) */ // Strip leading and trailing white-space String.prototype.trim = function() { return this.replace(/^\s*|\s*$/g, ''); } // Check if string is empty String.prototype.empty = function() { if (this.length == 0) return true; else if (this.length > 0) return /^\s*$/.test(this); } // Breaks cookie into an object of keypair cookie values function crumbleCookie(c) { var cookie_array = document.cookie.split(';'); var keyvaluepair = {}; for (var cookie = 0; cookie < cookie_array.length; cookie++) { var key = cookie_array[cookie].substring(0, cookie_array[cookie].indexOf('=')).trim(); var value = cookie_array[cookie].substring(cookie_array[cookie].indexOf('=')+1, cookie_array[cookie].length).trim(); keyvaluepair[key] = value; } if (c) return keyvaluepair[c] ? keyvaluepair[c] : null; return keyvaluepair; } /** * For GA cookie explanation, see http://services.google.com/analytics/breeze/en/ga_cookies/index.html. * * @return - <void> * * @pre-condition - pageTracker initialised properly * @post-condition - provides 'get' methods to access specific values in the Google Analytics cookies */ function gaCookies() { // Cookie syntax: domain-hash.unique-id.ftime.ltime.stime.session-counter var utma = function() { var utma_array; if (crumbleCookie('__utma')) utma_array = crumbleCookie('__utma').split('.'); else return null; var domainhash = utma_array[0]; var uniqueid = utma_array[1]; var ftime = utma_array[2]; var ltime = utma_array[3]; var stime = utma_array[4]; var sessions = utma_array[5]; return { 'cookie': utma_array, 'domainhash': domainhash, 'uniqueid': uniqueid, 'ftime': ftime, 'ltime': ltime, 'stime': stime, 'sessions': sessions }; }; // Cookie syntax: domain-hash.gif-requests.10.stime var utmb = function() { var utmb_array; if (crumbleCookie('__utmb')) utmb_array = crumbleCookie('__utmb').split('.'); else return null; var gifrequest = utmb_array[1]; return { 'cookie': utmb_array, 'gifrequest': gifrequest }; }; // Cookie syntax: domain-hash.value var utmv = function() { var utmv_array; if (crumbleCookie('__utmv')) utmv_array = crumbleCookie('__utmv').split('.'); else return null; var value = utmv_array[1]; return { 'cookie': utmv_array, 'value': value }; }; // Cookie syntax: domain-hash.ftime.?.?.utmcsr=X|utmccn=X|utmcmd=X|utmctr=X var utmz = function() { var utmz_array, source, medium, name, term, content, gclid; if (crumbleCookie('__utmz')) utmz_array = crumbleCookie('__utmz').split('.'); else return null; var utms = utmz_array[4].split('|'); for (var i = 0; i < utms.length; i++) { var key = utms[i].substring(0, utms[i].indexOf('=')); var val = decodeURIComponent(utms[i].substring(utms[i].indexOf('=')+1, utms[i].length)); val = val.replace(/^\(|\)$/g, ''); // strip () brackets switch(key) { case 'utmcsr': source = val; break; case 'utmcmd': medium = val; break; case 'utmccn': name = val; break; case 'utmctr': term = val; break; case 'utmcct': content = val; break; case 'utmgclid': gclid = val; break; } } return { 'cookie': utmz_array, 'source': source, 'medium': medium, 'name': name, 'term': term, 'content': content, 'gclid': gclid }; }; // Establish public methods // utma cookies this.getDomainHash = function() { return (utma() && utma().domainhash) ? utma().domainhash : null }; this.getUniqueId = function() { return (utma() && utma().uniqueid) ? utma().uniqueid : null }; this.getInitialVisitTime = function() { return (utma() && utma().ftime) ? utma().ftime : null }; this.getPreviousVisitTime = function() { return (utma() && utma().ltime) ? utma().ltime : null }; this.getCurrentVisitTime = function() { return (utma() && utma().stime) ? utma().stime : null }; this.getSessionCounter = function() { return (utma() && utma().sessions) ? utma().sessions : null }; // utmb cookies this.getGifRequests = function() { return (utmb() && utmb().gifrequest) ? utmb().gifrequest : null }; // utmv cookies this.getUserDefinedValue = function () { return (utmv() && utmv().value) ? decodeURIComponent(utmv().value) : null }; // utmz cookies this.getCampaignSource = function () { return (utmz() && utmz().source) ? utmz().source : null }; this.getCampaignMedium = function () { return (utmz() && utmz().medium) ? utmz().medium : null }; this.getCampaignName = function () { return (utmz() && utmz().name) ? utmz().name : null }; this.getCampaignTerm = function () { return (utmz() && utmz().term) ? utmz().term : null}; this.getCampaignContent = function () { return (utmz() && utmz().content) ? utmz().content : null }; this.getGclid = function () { return (utmz() && utmz().gclid) ? utmz().gclid : null }; }
URL: http://www.dannytalk.com/2010/08/19/read-google-analytics-cookie-script/