谷歌几个月前发布了gtag.js作为谷歌分析跟踪的新方式,最终取代了分析.js据我所知。 gtag.js是设置新的Google Analytics帐户时的默认选项,因此代码片段来自:
<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 跟踪代码管理器加载相同的分析.js脚本,因为ga
变量确实可用。但是,存在一些差异,因为在调用回调时undefined
tracker
参数,因为 gtag.js 不使用跟踪器,因此这种方法 clear 不起作用。
我浏览了 gtag.js 的文档,但我无法找到有关如何获取客户端 ID 的任何信息。分析文档.js指出不要直接访问cookie以获取客户端ID,这是有道理的。但是有没有办法通过带有 gtag.js 的 JavaScript API 来获取它,或者我现在必须求助于阅读 cookie?
接受的答案不再有效(至少对于 GA4)。正确的、最新的方法是:
gtag('get', 'YOUR_MEASUREMENT_ID', 'client_id', (client_id) => {
// do something with client_id
})
有关get
,请参阅官方 Gtag 文档中的文档.js。
Whlie 跟踪器id
属性不可用,至少目前它仍然是一个合适的 ga 跟踪器。 因此,以下内容将用于获取客户端 ID:
ga.getAll().forEach( (tracker) => {
var id = tracker.get('clientId'); console.log(id)
})
使用 ga.getAll() 访问 ga 跟踪器后,您可以设置"自定义任务",将 clientId 分配给您选择的自定义维度。在这里查看Simo的指南
有一种未记录的方法可以将客户端 ID 放入 GA:
gtag('config', 'UA-12345-1', {
'custom_map': {
'dimensionX': 'clientId'
}
});
显然,他们希望提供一种更方便的方式来获取值(您从字面上提供字符串"clientId",然后将其解析为正确的值)。
这是由一个名叫Yamata Ryoda的人制定的,并在Simo Ahava的一篇文章中详细记录。我承认我自己还没有测试过。