首页 > 解决方案 > 以后如何将数据“key and value”从网站推送到 Google Tag Manager Data?

问题描述

首先,我是谷歌标签管理器的新手,所以为我的解释道歉。

我正在尝试在我的网站上实施 Google 跟踪代码管理器。我不想使用太多功能,但我想做的主要事情是使用查询字符串参数加载我的网站:

示例:(键和值www.myweb.com ?key=key&value=value )

然后我试图创建一个函数,将键和值推送到谷歌标签管理器数据层

我添加了以下代码:

$(document).ready(function (){

    const urlSearchParams = new URLSearchParams(window.location.search);
    const params = Object.fromEntries(urlSearchParams.entries());

    console.log(params)

    window.dataLayer = window.dataLayer || [];
    dataLayer.push({params.key:params.value})
    //window.dataLayer.push({"Event":"dog"})
    
})

我有一个 index.html 并添加了来自谷歌标签管理器的头脚本和正文脚本(该页面由 Google Firebase 在线托管)。我不确定如何将键值发送到 Google Tag Manager 数据层,但主要是当我发送它时,我在哪里可以找到 Google Tag Manager 上的这些信息,我是否需要在 GLM 上创建一个变量或其他东西

先感谢您。

如果您需要更多信息,请告诉我

标签: javascriptapigoogle-tag-managerkey-valuegoogle-datalayer

解决方案


这不是一个好的解决方案 - 通过编写自己的 javascript 函数来捕获查询字符串,您基本上否定了 GTM 的目的。改用“Url”类型变量,将“组件类型”设置为“查询字符串”,并在“查询键”输入字段中输入参数名称。

url类型变量配置

但是要回答您的问题(即使您针对该特定问题的方法不好),是的,您需要创建一个变量来从 dataLayer 读取数据。

首先将值推送到 dataLayer。dataLayer 是一个对象数组,因此您可以使用键/值对“推送”一个新对象:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  "myDLKey":"myValue",
  "event":"updateMyDLKey"
});

然后在 GTM 接口的“变量”部分中,使用要检索其值的键创建一个 dataLayer 变量。

数据层变量配置

基本上没有用例来更改 dataLayer 版本。您可以指定一个默认值,以防数据层中不存在该键,否则该变量将未定义。

请注意,您需要将事件与任何新的或更新的键/值对一起推送,因为“事件”键告诉 GTM 更新其内部状态;否则推送的值将无法访问。

有些事件是“自然”发生的 - 例如,您不需要 dataLayer 中的 ab 事件来捕获带有 Url 类型变量的值,因为在大多数情况下会有一个页面加载事件(其他“内置”事件是 DOM 就绪的,窗口加载,如果您启用了任何内置的单击或表单变量,请单击并提交)。


推荐阅读