【问题标题】:Why is GTM merging object values in dataLayer?为什么 GTM 会合并 dataLayer 中的对象值?
【发布时间】:2015-11-26 15:53:52
【问题描述】:

我有以下代码:

  dataLayer.push({event: 'A',eventAttributes: { attrA: 'a' }});
  dataLayer.push({event: 'B',eventAttributes: { attrB: 'b' }});
  dataLayer.push({event: 'C',eventAttributes: { attrC: 'c' }});

和一个完全空的 GTM 容器(无标签、无触发器、无变量)。

当我检查 GTM 调试的 Data Layer 选项卡时,我看到:

{
  gtm: {start: 1448552543040, uniqueEventId: 1448552543091},
  event: 'A',
  eventAttributes: {attrA: 'a'}
}

{
  gtm: {start: 1448552543040, uniqueEventId: 1448552543092},
  event: 'B',
  eventAttributes: {attrA: 'a', attrB: 'b'}
}

{
  gtm: {start: 1448552543040, uniqueEventId: 1448552543092},
  event: 'C',
  eventAttributes: {attrA: 'a', attrB: 'b', attrC: 'C'}
}

如您所见,GTM 将值合并到 eventAttributes 对象,而不是覆盖该对象。

Q1:GTM 为什么要这样做?

Q2:有没有办法防止这种情况发生(除了将每个对象属性定义为单独的变量)?

仅供参考,我在数据层中使用eventAttributes 对象,因为我想简单地重新使用其中的任何内容作为我的基于事件的工具(Mixpanel、KISSmetrics...)的属性。对于上述问题,如果我必须在 DataLayer 和 GTM 中显式声明所有变量,我只是看不到任何方法来扩展 Mixpanel/KISSmetrics 的 GTM 实现。

更新

在控制台本身查看 dataLayer 后,显示值已正确推送且未合并:

所以一定是在读取dataLayer时GTM决定合并它们!

【问题讨论】:

    标签: google-tag-manager


    【解决方案1】:

    回答问题 1:

    GTM 这样做是因为这是 DataLayer 的预期行为: https://github.com/google/data-layer-helper

    添加来自 Kitravee Siwatkittisuk 的 Q2 答案,以使这篇文章详尽无遗:

    对 Q2 的回答:
    感谢 Kitravee Siwatkittisuk

    将_clear设置为真to preventing default recursive merge

    dataLayer.push({items: [1], _clear: true})
    

    【讨论】:

    • 默认 行为是合并数组,这真是太疯狂了。我正在使用 GA4 发送产品印象(因此可能是一页上的十几个产品)。但是,当我发送带有 ONE 产品数组的购买信息(项目)时,它会将它们合并并报告客户购买了十几个项目!疯狂的。添加_clear: true 修复它。
    • 为了避免可能的混淆,我想补充一点,我没有明确安装此答案中引用的数据层帮助程序。我使用 GTM 并手动运行 window['dataLayer'].push(...) 来推送我的数据(然后我的标签对其进行操作)。内置数据层功能确实支持_clear: true,您无需安装帮助程序即可做到这一点。
    【解决方案2】:

    第二季度的答案:

    将_clear设置为真to preventing default recursive merge

    dataLayer.push({items: [1], _clear: true})
    

    【讨论】:

      猜你喜欢
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多