2

我试图根据GTM数据层电子商务对象中包含的数据计算购物车的值。我将整个电子商务对象放入一个数据层变量中,以便我可以在自定义js变量中使用它,但是我无法进行递归计算。基于电子商务数据层对象的Google跟踪代码管理器自定义JavaScript变量

下面是来自数据层的代码的示例:

{ 
    "event": "checkout", 
    "ecommerce": { 
    "checkout": { 
     "products": [ 
     { 
      "name": "coat", 
      "id": "14M", 
      "quantity": 1, 
      "price": "100.00" 
     }, 
     { 
      "name": "pants", 
      "id": "12L", 
      "quantity": 3, 
      "price": "50.00" 
     } 
     ] 
    } 
    } 
}` 

我的目标是识别产品数量的产品阵列中,然后执行的产品价格*产物量计算多次需要通过whol产品数组。在这种情况下,这将是这样的:

(1 * 100)+(3 * 50)= 250。

我试图从Simo Ahava's related blogpost修改代码没有成功。他的博文和我的意图之间的差异是:

  1. 我不需要将购物车价值设置为电子商务自定义指标。我只想在自定义js中返回购物车的价值。
  2. 我不希望这涉及到添加或删除购物车中的物品。相反,我只是想要在触发GTM事件“checkout”时计算该值,并计算包含的产品的值。

在此先感谢。

回答

1

既然你已经创建了{{电子商务}}变量,那么它是非常容易的基础上提取总额产品数量和产品价格。

你必须创建自定义JS变量订单小计 然后在自定义的JS箱 粘贴下面的代码

function(){ 
    var productList={{ecommerce}}.checkout.products; 
    var totalAmount=0; 
    for(var i=0;i<productList.length;i++) 
    { 
    totalAmount+=(productList[i].quantity)*(parseFloat(productList[i].price)); 
    } 
    return totalAmount; 
} 

我希望这将帮助您解决您发出

+0

这点上,谢谢Dinesh。我也对此进行了修改,以便在串联的,以逗号分隔的列表函数()中获取产品标识(){product_list {{ecommerce}}。 var productIds =''; (var i = 0; i

1

这个js功能将最新的数据层的电子商务活动,并计算乘积之和:

function productSum() { 
    var result = 0; 
    var ecommerceDataLayers = dataLayer.filter(function(e){return e.event == "checkout";}); 
    if (ecommerceDataLayers.length) 
    { 
     var lastEcommerce = ecommerceDataLayers[ecommerceDataLayers.length-1]; 
     for(i=0;i<lastEcommerce.ecommerce.checkout.products.length;i++) { 
      var product = lastEcommerce.ecommerce.checkout.products[i]; 
      result += product.quantity*parseFloat(product.price); 
     } 
    } 
    return result; 
} 
相关问题