google-tag-manager - Google 跟踪代码管理器访问数据层对象值
问题描述
我正在尝试在添加到购物车事件时访问数据层变量,但它没有在标签管理器管理站点上得到跟踪
*事件被触发但值未发送
数据层推送:
<script>
dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'EUR',
'add': {
'products': [
{
'name': 'test',
'id': 'ZZZ232323',
'price': 33,
'brand': '',
'category': 'test',
'variant': '','quantity': 1
}
]
}
}
});
</script>
我正在尝试访问数据层以使用以下方式获取产品名称:
dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products[dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products.length - 1].price
解决方案
数据层变量不需要引用数据层的特定步骤(数组元素)。当您创建对 dataLayer 变量的引用时,例如ecommerce
,Google 跟踪代码管理器 (GTM) 将尝试在任何给定的 GTM 事件中评估它,但会退回到undefined
或您指定的任何其他值。
这意味着,如果您在产品数据可用时触发 Facebook Pixel 跟踪代码(事件 = addToCart),则对电子商务数据的正确引用将具有价值。有几个选项可以获取您的产品名称。
您可以创建一个通用的“电子商务”变量,引用ecommerce
为数据层变量名称。在您的 Facebook Pixel 相关代码中,您将不得不走到所需的变量,并注意任何可能的缺失值。但是,此电子商务变量可用于多个标签。
var productName = {{Ecommerce}}.add.products[0].name; //assuming you'll always have just one product in products array
或者,您可以选择一个特定变量,在其中设置“电子商务 - 添加到购物车的产品名称”,您可以在其中引用ecommerce.add.products[0].name
. 这样,您可以简单地将这个变量分配给正确的 Facebook Pixel 变量,使用{{Ecommerce - name of product added to cart}}
推荐阅读
- count - 如何在 scalc (Apache OpenOffice) 中使用公式来计算包含内容的单元格,而计数应该在第一个空单元格处停止?
- google-cloud-storage - 如果在 Google Cloud Storage 中未找到可公开访问的默认文件/图像,请更改默认文件/图像
- android - Android studio app 的活动突然变化
- php - Drupal 付款方式拒绝管理员访问
- javascript - 如何使用来自 JSON 的数据修改 div
- reactjs - 无法到达变量
- c++ - C++ 调试断言失败;表达式:列表迭代器不兼容
- python - 如何将csv转换为线路协议
- vue.js - VueJS 中的 props 相互依赖
- python - 有没有办法在我的 tkinter 应用程序中添加一个工作滚动条而不将它链接到列表框中?