如何获取 Google 分析客户端 ID

IT技术 javascript google-analytics
2021-03-11 20:03:20

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

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

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

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

有谁知道我怎么得到它?

4个回答

Google 确实有一些关于获取客户端 id 的文档

看起来像这样:

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

我以前也用过这个:

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

编辑:如果页面上有多个跟踪器,很可能在索引 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';
}

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

我对同步代码感兴趣是否有ga.getAll()[0].get('clientId');文件记录并保证在几个月/几年内有效或可以很快修改?
2021-04-24 20:03:20
所以我假设我们需要向我们的 Web 项目添加某种分析 JS 库?然后我们可以将此值发送到后端以在此 Java 代码中进行 Java 集成吗?cloud.google.com/appengine/docs/google-analytics
2021-04-25 20:03:20
它对我不起作用的任何原因?!我完全使用了这个脚本。
2021-05-06 20:03:20
嗨@Blexy,知道为什么 GA 文档功能不起作用吗?使用 getAll 值得庆幸。只是好奇为什么另一种方法不返回任何内容。
2021-05-15 20:03:20
@DougFirr 似乎在调用getAll和分析库尚未初始化和处理队列使用同步语法所以当时在索引 0 处没有跟踪器。尝试使用异步语法,如ga(function(tracker) { /* Your getter code */});
2021-05-19 20:03:20

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

对于 GA4 和 UA,我发现您可以轻松检查 _ga cookie,如下所示:

_ga=GA1.3.475128143.1522318100

在上面的例子中,用户 ID 是“475128143.1522318100”。

所以,在 PHP 中我可以快速获取它:

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

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

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

这对我有用。

@BenjaminHoffman 你能分享一下这个参考吗?
2021-04-27 20:03:20
投反对票,对不起!谷歌分析文档特别指出不要通过浏览器 API 访问他们的 cookie,因为他们的 cookie 可能会改变。相反,使用提供的 API 来获取客户端 ID。
2021-04-28 20:03:20
@BenjaminHoffman 他们的文档只显示了 Javascript 版本。
2021-05-05 20:03:20
这在他们的文档中无处不在。但这里只是一个例子。developer.google.com/analytics/devguides/collection/...
2021-05-21 20:03:20
@BenjaminHoffman 有时这不是一个实用的选择,类似于上面答案中显示的解决方案很有用
2021-05-21 20:03:20

首先创建 Google Analytics ga对象来创建跟踪器对象,通过向其传递“就绪回调”函数,然后使用跟踪器调用其他方法。

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

“function(tracker)”是一个回调函数,当分析库完全加载并准备好与之交互时调用。使用默认跟踪器对象作为第一个参数调用该函数。如果没有创建默认跟踪器,第一个参数是/将返回未定义。

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

下面代码中UA-XXXXX-Y替换为您来自 Google Analytics 的 UA 代码。

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

或者,对于第 1 行和第 2 行,使用下面的代码创建一个命名跟踪器。

// Queues a named tracker object for creation.
ga('create', 'UA-XXXXX-Y', 'auto', 'myTracker');
我认为你的第一个代码块有一个太多的}(有一个与“这里的其他代码”注释在同一行,下一行有一个)。
2021-04-30 20:03:20

如果您使用的是 Google Tag Manager,则可以使用 User-Defined Variable -> Variable type: "1st-Party Cookie" -> Cookie Name = _ga。我们称之为“GA Cookie”。它将像 GA.1.1.123.123 这样存储值。

剪下“GA.1.1”,再做一个User-Defined Variable -> Variable Type:“Custom JavaScript”,写一个简单的JS函数:

function() {
    var pattern = "GA1.1.";
    var id = {{GA Cookie}}.substr(pattern.length);
    return id;
}

它并不总是“GA1.1”,但它仍然有 5 个标志。你可以使用不同的变量,比如 var length = 5,但对我来说,它看起来像是一种神奇的数字。