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

Google Tag Manager自定义JS如何从数据层数组提取产品ID

GTM自定义JavaScript脚本提取商品ID实现方法

你给出的数据层为类数组结构,purchase事件对应的交易数据存放在索引为2的对象中,商品列表挂载在该对象的items字段下,遍历该字段即可提取到目标商品ID。

可直接部署的自定义JS变量代码

GTM要求自定义JavaScript变量必须包裹在无参函数中,同时需要增加容错逻辑,避免数据未就绪时抛出JS错误影响页面运行,完整代码如下:

function() {
  // 校验数据合法性,数据不存在时直接返回空数组
  const transactionData = dataLayer[2];
  if (!transactionData || !Array.isArray(transactionData.items)) {
    return [];
  }
  // 遍历商品列表提取所有ID
  return transactionData.items.map(function(item) {
    return item.id;
  });
}

返回值适配说明

  • 代码默认返回数字类型的ID数组:[259496742, 1061024],和你需要提取的目标值完全匹配
  • 如果上报场景需要逗号分隔的字符串格式,可以将返回逻辑修改为return transactionData.items.map(item => item.id).join(','),最终返回值为"259496742,1061024"
  • 如果需要统一输出字符串类型的ID,将取值逻辑修改为return String(item.id)即可

注意事项

  • 不要省略容错判断:如果GTM变量的触发时机早于交易数据推入dataLayer的时间,返回空数组不会阻塞页面其他脚本运行,也不会产生脏数据上报
  • 如果你的站点purchase事件在dataLayer中的位置不固定,不建议长期硬编码索引取值,推荐先通过GTM内置数据层变量读取items字段,再传入遍历逻辑,稳定性更高
  • 若后续调整了dataLayer的推送结构,只需要修改dataLayer[2]这部分的取值路径,后续遍历提取ID的逻辑不需要改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:24:25