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

时间:2017-08-08 00:31:15

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

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

以下是数据层代码的示例:

{
  "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事件“结账”时计算值,并计算所包含产品的价值。
  3. 提前致谢。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

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

您必须在自定义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;
}

我希望这可以帮助您解决问题