You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTM自定义变量添加if逻辑后metric5返回undefined问题排查

问题原因

  • 索引i未初始化就调用:你将品类判断、marginPrice计算的代码段放在了for循环外部,此时遍历索引i还没有被赋值,调用orderItems[i]会直接返回undefined,导致代码抛出错误,最终GTM返回空结果。你之前直接在push对象时写orderItems[i].metric5可以正常运行,是因为这行代码位于for循环内部,i是遍历过程中有效的索引值。
  • 多分支判断逻辑错误:你当前写的是两个独立的if判断,第二个if对应的else分支会覆盖第一个if的赋值结果。比如当商品品类是Red Hoodie时,第一个if给marginPrice赋值后,第二个if判断不满足,会触发else分支,把marginPrice重新覆盖为orderItems[i].metric5,第一个判断逻辑完全失效。
  • 额外注意:原有代码中i、lineItems没有加声明关键字,会默认变成全局变量,存在污染全局作用域的风险。

修正后的完整代码

function() {
  var ecom = JSON.parse(JSON.stringify({{dlv_ecommerce}}));
  var orderItems = {{dlv_purchase_ecommerce.purchase.products}};
  var convertFrom = {{dlv_purchase_ecommerce.currencyCode}};
  var rates = {{dlv_rates}};
  var n = orderItems.length;
  var lineItems = [];
  // 将marginPrice计算逻辑移入for循环内部
  for (var i = 0; i < n; i++) {
    var eventItem = orderItems[i].category;
    var marginPrice;
    // 调整为if else if多分支结构,避免赋值覆盖
    if(eventItem == "Red Hoodie"){
      marginPrice = orderItems[i].price * 0.10;
    } else if(eventItem == "Blue T-Shirt"){
      marginPrice = orderItems[i].price * 0.05;
    } else {
      marginPrice = orderItems[i].metric5;
    }
    lineItems.push({
      "name": orderItems[i].name,
      "id": orderItems[i].id,
      "price": orderItems[i].price,
      "brand": orderItems[i].brand,
      "category": orderItems[i].category,
      "quantity": orderItems[i].quantity,
      "dimension2": orderItems[i].dimension2,
      "dimension8": orderItems[i].dimension8,
      "dimension9": orderItems[i].dimension9,
      "dimension10": orderItems[i].dimension10,
      "dimension11": orderItems[i].dimension11,
      "metric1": orderItems[i].metric1, 
      "metric2": orderItems[i].metric2, 
      "metric3": orderItems[i].metric3, 
      "metric4": orderItems[i].metric4,
      "metric5": marginPrice / rates[convertFrom]
    });
  };

  var ecomAddProducts = {
    "products": lineItems,
  };
  return {'ecommerce' : {'purchase' : {'products' : ecomAddProducts}}};
}

内容的提问来源于stack exchange,提问作者bledley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:36:02