如何从GTM数据层中检索对象

How do I retrieve an object from the GTM dataLayer

本文关键字:检索 对象 数据 GTM      更新时间:2023-09-26

我有一个图像标签,需要用电子商务购买的信息填充。我需要在Tagmanager数据层中作为"产品"对象存储的单个项目。根据谷歌分析增强的电子商务跟踪:

  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('commerce').purchase.products

但这同样不起作用。

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

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

在GTM中,您将创建一个变量,当事件发生时,该变量将在数据层中循环,并返回产品名称,类似于以下内容(您可以稍微整理一下):

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

其中CCD_ 1是具有值CCD_。

对于那些与之斗争的人:

  1. 将DL变量创建为电子商务.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:很抱歉格式不正确。