使用gtag.js获取客户端ID

时间:2018-01-21 15:36:02

标签: javascript google-analytics analytics analytics.js gtag.js

几个月前Google发布了gtag.js作为Google Analytics跟踪的新方式,最终取代了analytics.js,据我所知。设置新的Google Analytics帐户时,gtag.js是默认设置,因此代码段来自:

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-12345678-1', 'auto');
  ga('send', 'pageview');
</script>

到此:

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-123456789-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-123456789-1');
</script>

我需要做的是使用gtag.js获取客户端ID。使用旧脚本,我可以执行以下操作。

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

从外观上看,gtag.js通过Google跟踪代码管理器加载相同的analytics.js脚本,因为ga变量确实可用。但是,有一些区别是因为tracker参数在调用回调because gtag.js does not use trackers时为undefined,所以这种方法很明显无法正常工作。

我浏览了the documentation for gtag.js,但我无法找到有关如何获取客户端ID的任何信息。 analytics.js states not to access the cookie directly的文档获取客户端ID,这是有道理的。但有没有办法通过gtag.js通过JavaScript API,或者我现在不得不求助于读取cookie?

3 个答案:

答案 0 :(得分:5)

如果跟踪器id属性不可用,它至少在目前仍然是一个合适的跟踪器。 所以以下方法可以获得clientId:

ga.getAll().forEach( (tracker) => {
  var id = tracker.get('clientId'); console.log(id)
})

使用ga.getAll()访问ga跟踪器后,您可以设置&#39; customTask&#39;这会将clientId分配给您选择的自定义维度。看看Simo的指南here

答案 1 :(得分:2)

接受的答案不再有效。正确的、最新的方法是:

gtag('get', 'YOUR_MEASUREMENT_ID', 'client_id', (client_id) => {
    // do something with client_id
})

请参阅 official Gtag.js docs 中的 get 文档。

答案 2 :(得分:0)

有一种无证的方式可以让客户了解GA:

gtag('config', 'UA-12345-1', {
  'custom_map': {
    'dimensionX': 'clientId'
  }
});

显然,他们希望提供一种更方便的方法来获取价值(你提供了字符串'clientId',然后将其解析为正确的值)。

这是由一个名为Yamata Ryoda的人制定的,最后由Simo Ahava的文章记录。我承认我还没有自己测试过。