how to get the Google analytics client ID

2019-01-17 06:38发布

When you are creating a new instance of analytics.js by running

ga('create', 'UA-XXXXXXX-Y', {'cookieDomain': 'none'});

GA creates a unique client Id. I want to fetch this id and use it for my own purposes, but I can find only setter for this parameter but can't find any getter method to get it.

GA send it later in a parameter called &cid=123123.232323

Does anyone knows how do I get it?

3条回答
Animai°情兽
2楼-- · 2019-01-17 06:53

Google does have some documentation on getting the client id.

Looks like this:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

I've used this before, too:

ga.getAll()[0].get('clientId');

EDIT: If you have more than one tracker on the page, it may be probable that at index 0 there is not the one you want, so an alternative function should be the following:

function() {
  try {
    var trackers = ga.getAll();
    var i, len;
    for (i = 0, len = trackers.length; i < len; i += 1) {
      if (trackers[i].get('trackingId') === "ID-PROPERTY") {
        return trackers[i].get('clientId');
      }
    }
  } catch(e) {}  
  return 'false';
}

where ID-PROPERTY is the id of your Property (i.e. UA-XXXXX-XX).

查看更多
倾城 Initia
3楼-- · 2019-01-17 06:54

First create the Google Analytics ga object to create a tracker object, by passing it a "Ready callback" function, then use the tracker to call other methods.

The ga() command queue provides an interface for doing almost everything you need to do with the analytics.js library.

"function(tracker)" is a callback function to be invoked when the analytics library is fully loaded and ready to be interacted with. The function is invoked with the default tracker object as it first argument. If no default tracker has been created, the first argument is/will return undefined.

Note: when the callback function is invoked, all ga object methods are available for use. Including the one you want tracker.get('clientId')

Replace the UA-XXXXX-Y in the code below with your UA code from Google Analytics.

// Queues a tracker object for creation.
ga('create', 'UA-XXXXX-Y', 'auto');

// Once the tracker has been created, log the
// client ID to the console.
ga(function(tracker) {
  console.log(tracker.get('clientId'));
  /* Your other code here */
});

Alternatively for lines 1 & 2, use the code below to create a named tracker.

// Queues a named tracker object for creation.
ga('create', 'UA-XXXXX-Y', 'auto', 'myTracker');
查看更多
三岁会撩人
4楼-- · 2019-01-17 06:59

Although the author explicitly said he is using Javascript, others (like me) may be searching for a way to get this information from the server-side, like PHP.

I found that you can easily check for the _ga cookie, which looks like:

_ga=GA1.3.475128143.1522318100

In the exemple above, the user id is "475128143.1522318100".

So, in PHP I can fetch it quickly as:

$gaUserId = preg_replace("/^.+\.(.+?\..+?)$/", "\\1", @$_COOKIE['_ga']);

You can also use Javascript to retrieve the cookie in a single line, without using ga() functions:

var gaUserId = document.cookie.match(/_ga=(.+?);/)[1].split('.').slice(-2).join(".")

This is working for me.

查看更多
登录 后发表回答