<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?
答案 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的文章记录。我承认我还没有自己测试过。