我可以用gtag()替换dataLayer.push()吗?

16
当我尝试实现和理解Google Tag Manager和Google Analytics的使用时,我想知道为什么在某些地方会谈论dataLayer.push(),而在其他地方使用gtag()进行类似操作。它们似乎在服务于相同的目的,即使结果并不完全相同。 gtag()被定义为:
function gtag(){dataLayer.push(arguments)};

如果我尝试使用代码,当使用gtag时会得到一个Arguments对象。因此,我理解存在差异,但这是否重要并且它们应该用于不同的目的?
> dataLayer = []
> dataLayer.push({'event','login'})
[{'event','login'}]
> dataLayer = []
> gtag({'event','login'})
[Arguments({'event','login'})]

什么情况下应该使用其中一个,或者我可以只使用其中一个吗?

你是在哪里找到gtag()和dataLayer.push()的源代码的? - undefined
1个回答

14

其实它们是没有区别的。gtag()只是对dataLayer.push()的JS函数进行了封装。不过,gtag更为推荐。

使用gtag的原因是为了避免任何可能意外污染或更改dataLayer对象中的数据的操作,这可能会影响分析数据。

从技术上讲,它们是相同的,你可以使用任何一种方式。

就我个人而言,在标记事件时,我通常会创建自己的函数:

// definition
function gevent(name, data) { 
    gtag('event', name, data);
}

// sample
gevent('level_up', { userId: 123, prevLevel: 12, currLevel: 13 });
gevent('logout', { userId: 123 });

我做了同样的事情,但不知道为什么使用dataLayer.push发送的信息实际上没有发送到Google Analytics 4,而且我只能在tagassistant中看到由dataLayer.push创建的事件和维度,而不能在analytics.google中看到。有什么想法吗? - Shila Mosammami
1
@ShilaMosammami 对于 GA4 中不是默认的事件和维度,您需要创建它们,即自定义事件和自定义维度。只有在正确注册自定义事件和维度,并且在过去 24 小时内发送了事件时,数据才会可用。 - Pete Houston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接