我想从谷歌标签管理器的dataLayer对象中获取一些值。在chrome标签辅助中,我得到这样的值
[
{
"gtm.start": 1503053374849,
"event": "gtm.js",
"gtm.uniqueEventId": 0
},
{
"event": "gtm.dom",
"gtm.uniqueEventId": 1
},
{
"event": "gtm.load",
"gtm.uniqueEventId": 2
},
{
"Linker": "_ga=53655374"
}
]
我需要得到“链接器”值。我尝试了dataLayer[3].Linker
,但它给了我“undefined”或blank,dataLayer[1].event
也是如此(它是空白的,而不是返回值=“gtm.dom”)当我尝试dataLayer[0].event
时,它返回正确的'gtm.js'
请帮助我如何获得“链接器”值
6条答案
按热度按时间ikfrs5lh1#
你可以通过google标签管理器javascript-api访问推送的数据。变量部分将是GTM容器的container-id。确保你的地址是正确的。
结果将是DataLayers状态的最后一个值
laawzig22#
在表格
console.table(dataLayer);
中打印数据层,并记下它将为Linker
显示的index
值。然后,您可以使用
dataLayer[XXX]
作为XXX
作为Linker
的index
值。wwodge7n3#
实际上,你可以从下面的代码中获取dataLayer,只需调用
getFromDataLayer('your_object_key_from_dataLayer');
,然后你应该从dataLayer中获取值。您可以使用google_tag_manager['container_id'].dataLayer.get
来获得相同的结果,但您的代码依赖于GTM容器ID。50pmv0ei4#
最好的方法是使用Google Tag Manager本身,这就是它的设计目的。为此,请转到GTM接口(tagmanager.google.com)并创建一个dataLayer类型的variable。然后,您可以在选择的标记中使用此变量,将其值传递给第三方系统。
dsf9zpds5#
我一直在寻找一个类似问题的答案,看到你还没有找到一个明确的解决方案。
我发现this article by Simo Ahava突出了从GTM访问对象变量时vanilla JS和GTM之间的差异。
所以根据那篇文章,你应该能够使用它并获得值:
dataLayer.3.Linker
bhmjp9jg6#
获取GTM容器ID可能是一个问题,具体取决于环境和加载的容器数量。这是获取值的一种快速简便的方法。
google_tag_manager[Object.getOwnPropertyNames(window.google_tag_manager).filter(name => name.includes('GTM'))[0]].dataLayer.get('gtm.start');