首页 文章

基于电子商务数据层对象的Google跟踪代码管理器自定义javascript变量

提问于
浏览
2

我正在尝试根据GTM数据层电子商务对象中包含的数据计算购物车的 Value . 我将整个电子商务对象带入一个数据层变量,因此我可以在自定义js变量中使用它,但我无法使递归计算工作 .

这是来自datalayer的代码示例:

{
  "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修改代码没有成功 . 他的博客和我的意图之间的差异是:

  • 我不需要将购物车 Value 设置为电子商务自定义指标 . 我想在自定义js中返回购物车的 Value .

  • 我不希望这涉及添加或删除购物车中的商品 . 相反,我只想计算触发GTM事件"checkout"时的值并计算所包含产品的值 .

提前致谢 .

2 回答

  • 1

    由于您已经创建了{}变量,因此可以根据产品的数量和产品价格轻松获取总金额 .

    你必须创建自定义js变量 Order Subtotal 然后在代码下面的自定义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;
    }
    

    我希望这能帮助您解决问题

  • 1

    此JS函数将采用最新的datalayer电子商务事件并计算产品总和:

    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;
    }
    

相关问题