GTM - return variable/macro 中增强的电子商务对象
GTM - return Enhanced Ecommerce object in variable/macro
情况
增强型电子商务跟踪已在某些网站上全面实施。这是通过内置功能 Enhanced Ecommerce - 使用 dataLayer 完成的。
示例:
var ecommercObject = {
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345', // Transaction ID. Required for purchases and refunds.
'affiliation': 'Online Store',
'revenue': '35.43', // Total transaction value (incl. tax and shipping)
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{ // List of productFieldObjects.
'name': 'Triblend Android T-Shirt', // Name or ID is required.
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1,
'coupon': '' // Optional fields may be omitted or set to empty string.
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1
}]
}
}
}
期望的行为
我想为另一个分析系统重新使用增强型电子商务实施。
所以我需要 macro/variable 在 GTM 中,returns Enahnced Ecommerce JavaScritp 对象。
当前尝试
自定义 JS: 电子商务对象
我在控制台中尝试了这个有效的宏,但在 GTM 中无效。
(function(){
myStringArray = window.dataLayer;
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
if(myStringArray[i].ecommerce){
return myStringArray[i];
}
}
return false;
})()
数据层变量:电子商务对象
我尝试使用 dataLayer 变量名称 "ecommerce" 的宏类型 DataLayer。没有效果。
问题
当我在自定义 TAG 中使用此代码时:
var eecom = {{ECOMMERCE OBJECT}}
console.dir(eecom);
它returns空字符串。
问题
当 Enhanced Ecommerce 对象出现在 dataLayer 中时,是否有任何通用的解决方案来检索它?
Google 标签管理器 macro/variable
在 GTM 中 JavaScript 宏不能 return JS 对象。 Niether JS 变量不能 return JS 对象。
所以最后我将这个宏构建到 TAG 中并且它起作用了。最终解决方案如下所示:
var dl = window.dataLayer;
var eecom = "";
var al = dl.length;
for (var i = 0; i < al; i++) {
if(dl[i].ecommerce){
eecom = dl[i].ecommerce;
break;
}
}
情况
增强型电子商务跟踪已在某些网站上全面实施。这是通过内置功能 Enhanced Ecommerce - 使用 dataLayer 完成的。
示例:
var ecommercObject = {
'ecommerce': {
'purchase': {
'actionField': {
'id': 'T12345', // Transaction ID. Required for purchases and refunds.
'affiliation': 'Online Store',
'revenue': '35.43', // Total transaction value (incl. tax and shipping)
'tax':'4.90',
'shipping': '5.99',
'coupon': 'SUMMER_SALE'
},
'products': [{ // List of productFieldObjects.
'name': 'Triblend Android T-Shirt', // Name or ID is required.
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1,
'coupon': '' // Optional fields may be omitted or set to empty string.
},
{
'name': 'Donut Friday Scented T-Shirt',
'id': '67890',
'price': '33.75',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1
}]
}
}
}
期望的行为
我想为另一个分析系统重新使用增强型电子商务实施。
所以我需要 macro/variable 在 GTM 中,returns Enahnced Ecommerce JavaScritp 对象。
当前尝试
自定义 JS: 电子商务对象
我在控制台中尝试了这个有效的宏,但在 GTM 中无效。
(function(){
myStringArray = window.dataLayer;
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
if(myStringArray[i].ecommerce){
return myStringArray[i];
}
}
return false;
})()
数据层变量:电子商务对象
我尝试使用 dataLayer 变量名称 "ecommerce" 的宏类型 DataLayer。没有效果。
问题
当我在自定义 TAG 中使用此代码时:
var eecom = {{ECOMMERCE OBJECT}}
console.dir(eecom);
它returns空字符串。
问题
当 Enhanced Ecommerce 对象出现在 dataLayer 中时,是否有任何通用的解决方案来检索它?
Google 标签管理器 macro/variable
在 GTM 中 JavaScript 宏不能 return JS 对象。 Niether JS 变量不能 return JS 对象。
所以最后我将这个宏构建到 TAG 中并且它起作用了。最终解决方案如下所示:
var dl = window.dataLayer;
var eecom = "";
var al = dl.length;
for (var i = 0; i < al; i++) {
if(dl[i].ecommerce){
eecom = dl[i].ecommerce;
break;
}
}