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
相关产品推荐
相关产品推荐

