如何获取Google Analytics(分析)客户端ID

use*_*757 30 javascript google-analytics

当您通过运行创建analytics.js的新实例时

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

GA创建一个唯一的客户端ID.我想获取此ID并将其用于我自己的目的,但我只能找到此参数的setter但找不到任何getter方法来获取它.

GA稍后会在一个名为的参数中发送它 &cid=123123.232323

有谁知道我怎么得到它?

Ble*_*exy 69

谷歌确实有一些关于获取客户端ID的文档.

看起来像这样:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
Run Code Online (Sandbox Code Playgroud)

我以前也用过这个:

ga.getAll()[0].get('clientId');
Run Code Online (Sandbox Code Playgroud)

编辑:如果页面上有多个跟踪器,则索引0可能不存在您想要的跟踪器,因此备用函数应如下所示:

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';
}
Run Code Online (Sandbox Code Playgroud)

其中ID-PROPERTY是您的财产的ID(即UA-XXXXX-XX).

  • 嗨@Blexy,知道为什么 GA 文档功能不起作用吗?值得庆幸的是,使用 getAll 确实如此。只是好奇为什么另一种方法不返回任何内容。 (3认同)
  • @DougFirr似乎在调用_getAll_时使用**synchronous**语法,并且尚未初始化分析库并处理队列.所以那时索引0没有跟踪器.尝试使用**async**语法,如`ga(function(tracker){/*你的getter代码*/});` (3认同)
  • 我对**同步代码**很感兴趣.是`ga.getAll()[0] .get('clientId');`记录并确保在几个月/几年内有效或可以很快修改的内容? (2认同)

Cra*_*gen 6

首先创建Google Analytics ga对象以创建跟踪器对象,方法是将其传递给"Ready callback"函数,然后使用跟踪器调用其他方法.

GA()命令队列提供一个接口,这样做几乎所有你需要与analytics.js库做的一切.

"function(tracker)"是在分析库完全加载并准备与之交互时调用的回调函数.使用默认跟踪器对象作为第一个参数调用该函数.如果没有创建默认跟踪器,则第一个参数是/将返回undefined.

注意:调用回调函数时,所有ga对象方法都可以使用.包括你想要的tracker.get('clientId')

使用Google Analytics中的UA代码替换下面代码中的UA-XXXXX-Y.

// 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 */
});
Run Code Online (Sandbox Code Playgroud)

或者对于第1行和第2行,请使用以下代码创建命名跟踪器.

// Queues a named tracker object for creation.
ga('create', 'UA-XXXXX-Y', 'auto', 'myTracker');
Run Code Online (Sandbox Code Playgroud)


Ale*_* T. 6

尽管作者明确表示他正在使用Javascript,但其他人(例如我)可能正在寻找一种从服务器端获取此信息的方法,例如PHP。

我发现您可以轻松检查_ga cookie,如下所示:

_ga=GA1.3.475128143.1522318100
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,用户标识为“ 475128143.1522318318100”。

因此,在PHP中,我可以按以下方式快速获取它:

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

您也可以使用Javascript在一行中检索Cookie,而无需使用ga()函数:

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

这对我有用。

  • @BenjaminHoffman 有时这不是一个实用的选择,类似于上面答案中所示的解决方案是有用的 (3认同)
  • 不好意思,对不起!谷歌分析文档特别指出_not_不能通过浏览器API访问其cookie,因为其cookie可能会更改。而是使用提供的API获取客户端ID。 (2认同)