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

如何修改Google Script修复JSON字段提取的TypeError问题

问题分析与修复方案

错误根源

你遇到的TypeError: Cannot read properties of undefined (reading 'quantity'),本质是假设payments数组和itemsInCart数组按索引一一对应,但实际二者长度不匹配或无索引关联关系,导致itemsInCart[i]返回undefined,无法读取quantity属性。

原脚本逻辑仅适用于第一个API中cannabinoidInformation和weightTierInformation严格按索引配对的场景,但订单API里的支付记录与商品项并非这种对应关系。

修复后的脚本方案

方案1:整单支付与商品项关联(符合常规订单业务逻辑)

如果订单的支付记录是针对整单的,需要将每条支付记录与该订单下所有商品项组合,使用双层flatMap实现:

var values = json.orders.flatMap(({ name, payments, itemsInCart }) => 
  // 遍历每条支付记录,再遍历所有商品项,生成支付-商品关联数据
  payments.flatMap(({ amount, paymentType }) => 
    itemsInCart.map(({ quantity, sku }) => [name, amount, paymentType, quantity, sku])
  )
);

方案2:保留索引关联+空值容错(仅当确认二者有索引对应时使用)

如果业务上确实需要按索引关联,但要避免因数组长度不匹配报错,增加空值兜底逻辑:

var values = json.orders.flatMap(({ name, payments, itemsInCart }) => 
  payments.map(({ amount, paymentType }, i) => {
    // 若对应索引无商品项,用空对象兜底
    const targetItem = itemsInCart[i] || {};
    // 给缺失字段设置默认空值,避免报错
    return [
      name, 
      amount, 
      paymentType, 
      targetItem.quantity ?? '', 
      targetItem.sku ?? ''
    ];
  })
);

额外说明

如果API响应中支付记录与商品项存在明确的业务关联字段(比如支付记录里的itemId),请优先使用该字段进行匹配,而非索引,这样数据准确性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:35:47