我正在尝试在 Google 跟踪代码管理器上设置数据层变量以捕获我们网站的电子商务数据。我可以成功捕获单个商品的 id、名称、价格和数量;但如果我想设置 GTM 来处理未知数量的项目,则在预览我的更改时,返回值似乎总是“未定义”。以下是成功触发的 dataLayer 自定义事件示例:
dataLayer.push({
event: "AddToCart",
ecommerce: {
currency: "USD",
items: [
{
item_id: "CTFBK",
item_name: "Black Color Tissue Paper, 20x30\", Bulk 480 Sheet Flat Pack",
price: 35.75,
quantity: 1
},
{
item_id: "18WK",
item_name: "White Kraft Recycled Jewelry Boxes, 3.5x3.5x1\", 100 Pack, Fiber Fill",
price: 49.2,
quantity: 1
},
{
item_id: "RBLBC",
item_name: "Romantic Blooms Paper Gift Bag, Cub 8x4.75x10\", 250 Pack",
price: 125,
quantity: 3
}
]
},
gtm.uniqueEventId: 25
})
我创建了一个名为“ecommerce.items”的数据层变量,其数据层变量名称为:“ecommerce.items”。在预览中,此变量返回以下数组:
[
{
item_id: "CTFBK",
item_name: "Black Color Tissue Paper, 20x30\", Bulk 480 Sheet Fla" +
"t Pack",
price: 35.75,
quantity: 1
},
{
item_id: "18WK",
item_name: "White Kraft Recycled Jewelry Boxes, 3.5x3.5x1\", 100 " +
"Pack, Fiber Fill",
price: 49.2,
quantity: 1
},
{
item_id: "RBLBC",
item_name: "Romantic Blooms Paper Gift Bag, Cub 8x4.75x10\", 250 " +
"Pack",
price: 125,
quantity: 3
}
]
这是我插入到 JavaScript 变量的“全局变量名称”中的最新 JavaScript 函数,该函数应返回价格值数组:
function() {
var itemPrices = [];
var items = {{ecommerce.items}};
if (items && items.length > 0) {
for (var i = 0; i < items.length; i++) {
if (items[i].price) {
itemPrices.push(items[i].price);
}
}
}
return itemPrices;
}
根据 GTM 预览中的“变量”选项卡,这将返回“未定义”。我可以采取什么不同的方法来返回每件商品的价格数组?
您可以通过JavaScript从全局对象窗口获取dataLayer。
var data = window.dataLayer
if(dataLayer) {
var itemPrices = [];
var items = data;
if (items && items.length > 0) {
for (var i = 0; i < items.length; i++) {
if (items[i].price) {
itemPrices.push(items[i].price);
}
}
}
return itemPrices;
}