【问题标题】:How do I retrieve an object from the GTM dataLayer如何从 GTM 数据层中检索对象
【发布时间】:2015-11-26 15:06:24
【问题描述】:

我有一个图像标签,我需要用电子商务购买的信息填充它。我需要在 Tagmanager 数据层中存储为“产品”对象的单个项目。根据 Google Analytics 增强型电子商务跟踪:

  dataLayer.push({
    '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
         }]
      }
    }
  });

所以现在我需要遍历产品来构建图像 URL,例如:

http://some-domain.com/?p1=12345&v1=15.25&p2=67890&v2=33.75...

因为数据已经在 dataLayer 中,我应该能够编写一些 JavaScript 来检索产品对象,迭代它的元素并创建我需要附加到图像 URL 的字符串部分。有道理,不是吗?

但是:我不知道如何在标签中检索产品元素。我尝试在标签管理器中将产品对象创建为变量,但这似乎不起作用。我尝试通过以下方式访问它:

google_tag_manager["GTM-uniqueid"].dataLayer.get('ecommerce').purchase.products

但还是不行。

【问题讨论】:

    标签: javascript google-tag-manager


    【解决方案1】:

    一种选择是在 dataLayer 中包含一个事件,例如:

    dataLayer.push({
        'event': 'ecomm event',
        'ecommerce': {
          'purchase': {
            'actionField': {
              'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
              // .... your original stuff
             }]
          }
        }
      });
    

    在 GTM 中,您将创建一个变量,该变量将在该事件发生时循环通过该 dataLayer,并返回产品名称,如下所示(您可以稍微整理一下):

    function(){
        var dl = {{DL - Ecomm products}};
        var prodNames = '';
        for (var i=0; i<dl.length; i++){
            prodNames += dl[i].name + '|';
        }
        return prodNames;
    }    
    

    其中{{DL - Ecomm products}} 是一个dataLayer 变量,其值为ecommerce.purchase.products

    【讨论】:

      【解决方案2】:

      对于那些与之抗争的人:

      1. 创建一个 DL 变量作为 ecommerce.purchase.products
      2. 在 GTM 中创建自定义 JS 变量:
      function() {
      var prods = {{DL - products}};
      var src = "http://YOUR URL/?a=1"; 
      var len = prods.length;
      for (i=0; i < len; i++) {
      var b = i+1;
      src = src + "&ITEM" + b + "=" + prods[i].id + "&AMT" + b + "=" + prods[i].price + "&QTY" + b + "=" + prods[i].quantity;
      }
      src = src + "&CURRENCY=GBP";
      return src;
      }
      
      1. 将图像标记作为您的自定义 JavaScript 变量进行传输。

      完成

      PS:很抱歉格式错误。

      【讨论】:

        猜你喜欢
        • 2014-01-27
        • 2018-10-16
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        • 1970-01-01
        • 2014-02-17
        • 1970-01-01
        • 2017-03-16
        相关资源
        最近更新 更多