Google 跟踪代码管理器中的数组值总和

Sum array values in Google Tag Manager

我想在 Google 跟踪代码管理器中使用自定义 javascript 创建一个自定义变量。此变量将 return 每个产品 sku 数量的总和为总订单数量。因此,在下面的示例数据层中,我想 return 6.

dataLayer = [{
    "pageName":"confirmation",
    "pageCategory":"checkout",
    "transactionProducts": [{
        "sku":"item1",
        "price":10,
        "quantity":3,
        "currency":"USD"
    },{
        "sku":"item2",
        "price":10,
        "quantity":2,
        "currency":"USD"
    },{
        "sku":"item3",
        "price":10,
        "quantity":1,
        "currency":"USD"
    }]
}];

对于 GTM,该值必须位于 js 函数的 return 行中。我将数量变量命名为 {{sku quantity}}。如何将总 sku 数量值加总到自定义变量中?

这是一种通过自定义 JS 变量获取总和的可能方法,无需使用自定义变量,但需要您将 dataLayer 修改为 dataLayer.push 并添加事件键,像这样:

dataLayer.push({
    'event': 'ecomm confirmation',
    "pageName":"confirmation",
    "pageCategory":"checkout",
    "transactionProducts": [{
        "sku":"item1",
        "price":10,
        "quantity":3,
        "currency":"USD"
    },{
        "sku":"item2",
        "price":10,
        "quantity":2,
        "currency":"USD"
    },{
        "sku":"item3",
        "price":10,
        "quantity":1,
        "currency":"USD"
    }]
});

您的自定义 JS 看起来像这样(更改名称以满足您的需要):

function(){
    try{
        var sum = 0;
        var tp = {{transactionProducts}};

        if (tp){
            for (i=0; i<tp.length; i++){
              sum += tp[i].quantity;
            }
        }
        return sum;
    }
    catch(e){
    }
}

其中 {{transactionProducts}} 是数据层类型变量。

然后您可以创建一个事件标签,例如,它将调用此自定义 JS 和 return 数量的总和。