google-analytics - GTM - 在变量/宏中返回增强型电子商务对象

标签 google-analytics google-tag-manager google-datalayer enhanced-ecommerce

情况

增强型电子商务跟踪已在某些网站上全面实现。这是通过内置功能 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
           }]
        }
      }
    }

期望的行为

我想为另一个分析系统重新使用增强型电子商务实现。

所以我需要 GTM 中的宏/变量,它返回 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 变量:电子商务对象

我要么尝试使用 dataLayer 变量名称“ecommerce”的宏类型 DataLayer。没有影响。

问题

当我在自定义 TAG 中使用此代码时:

var eecom = {{ECOMMERCE OBJECT}}
console.dir(eecom);

它返回空字符串。

问题

当 Enhanced Ecommerce 对象出现在 dataLayer 中时,是否有任何通用的解决方案来检索它?

最佳答案

Google 跟踪代码管理器宏/变量

在 GTM 中,JavaScript 宏不能返回 JS 对象。 Niether JS 变量不能返回 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;
  }
} 

关于google-analytics - GTM - 在变量/宏中返回增强型电子商务对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950814/

相关文章:

windows-phone-8 - 适用于 Windows Phone 的 Google Analytics UTM 跟踪

javascript - GTM 内容事件

javascript - 为什么跟踪代码管理器未检测到我的数据层?

javascript - 使用 dataLayer 的 Google 跟踪代码管理器触发器不会触发

javascript - Google Analytics(通用)事件跟踪不起作用

javascript - 循环遍历表以返回 Google Analytics 电子商务中 _addItem() 的交易信息

javascript - Google Analytics 跟踪事件不起作用

google-analytics - 代码仍在 Google 跟踪代码管理器中运行

javascript - Google Tag Manager + IE8 生成 404

google-analytics - 如何将对象推送到 dataLayer