我已经实现了 Google Analytics sendHitTask
tracker 方法,以便将 Google Analytics 发送到其自身的任何点击(网页浏览、事件...)的副本推送到一个数组,然后我可以检查并用于调试:
(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','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXXXX-1', 'auto');
// https://developers.google.com/analytics/devguides/collection/analyticsjs/tasks#adding
ga(function(tracker) {
var originalSendHitTask = tracker.get('sendHitTask');
tracker.set('sendHitTask', function(model) {
originalSendHitTask(model); // Send to GA as usual
window.gaDebugging.push(model); // Push copy to debugging array
});
});
ga('send', 'pageview');
这适用于:
- 我通过代码推送的点击次数(例如
<button onclick="ga('send', 'event', 'Test'...
- 我通过 GTM 发送的点击量为
Custom HTML Tag
(例如<script>ga('send', 'event', 'Test'...</script>
)
但是这不适用于:
- 我使用内置 Universal Analytics 模板通过 GTM 发送的点击次数 (
[1] Choose Products -> Universal Analytics
)
知道如何通过内置 Universal Analytics 模板标记跟踪 GTM 发送的点击并将这些点击推送到 JavaScript 数组吗?
最佳答案
当您使用 ga(function(tracker) { ... })
语法时,该函数使用由 ga('create', 'UA-XXXXX -Y')
命令作为其参数。
换句话说,您在此回调中执行的任何操作将仅适用于使用此默认跟踪器发送的点击。
当您使用标签模板创建标签时,Google 跟踪代码管理器不会使用默认跟踪器。相反,它为每个注入(inject)的标签提供一个唯一的跟踪器名称。部分原因是 GTM(尚)并不真正支持您在跟踪器上设置的字段与您在代码上设置的字段之间的区别。
要对使用 GTM 标记模板创建的标记应用 sendHitTask
操作,您需要重命名这些模板使用的跟踪器。您可以在高级配置> 设置跟踪器名称下找到此设置。只需将该字段留空(确保您已选中该复选框)。现在,具有此设置的标记模板将使用默认跟踪器名称,以及您对 ga(function(tracker) { ... }) 中的 tracker
对象执行的任何操作也将适用于 GTM 标记模板。
但是!这是有风险的,因为正如我上面所写,GTM 没有针对跟踪器与单个标签的单独字段。换句话说,您为一个标签模板添加的任何要设置的字段和自定义维度/指标现在都将应用于共享跟踪器的所有点击姓名。如果您想发送命中范围内的自定义维度,或单独为单个命中设置字段,这尤其成问题。
遗憾的是,除了在每次点击之间取消每个跟踪器字段之外,确实没有适当的解决方法,但这是很大的开销。您可以做的一件事是仅使用自定义 HTML 标签来处理 Google Analytics(分析)点击,使用内联 ga('send'...)?
语法,但这确实削弱了在第一名。
关于javascript - sendHitTask 不适用于通过 GTM Universal Analytics 标记模板发送的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872244/