Zapier-输入数据排序:Shopify自定义产品属性匹配需求
解决Zapier中Shopify自定义产品属性的名称与值匹配问题
我之前帮好几个开发者处理过这个Zapier+Shopify的痛点——Shopify确实会把自定义产品属性拆成两个平行数组Line Items Properties Names和Line Items Properties Values传递给Zapier,导致直接用起来特别麻烦。下面给你一套实操性极强的解决方案:
核心思路
这两个数组是索引一一对应的:Names数组里第N个元素,必然对应Values数组里第N个元素。我们只需要用Zapier的「Code by Zapier」工具写一段简单代码,就能把它们配对成结构化的键值对,方便后续步骤直接调用。
具体实现步骤(以JavaScript为例)
- 在Zapier流程中添加一个「Code by Zapier」步骤,选择「Run JavaScript」
- 在「Input Data」里定义两个变量:
propNames:关联Shopify触发步骤里的「Line Items Properties Names」字段propValues:关联Shopify触发步骤里的「Line Items Properties Values」字段
- 粘贴以下代码:
// 初始化空对象存储配对后的属性 const pairedProps = {}; // 按索引遍历数组,配对名称与值 for (let i = 0; i < propNames.length; i++) { // 跳过空属性名,避免无效键 if (propNames[i]) { pairedProps[propNames[i]] = propValues[i] || ""; } } // 返回结构化结果,后续步骤可直接调用 return { pairedProperties: pairedProps };
- 运行测试后,你会得到一个清晰的结构化对象。比如输入是:
propNames: ["Size", "Custom Engraving", "Color"]propValues: ["L", "Happy Birthday", "Navy"]
输出会是:
{ "pairedProperties": { "Size": "L", "Custom Engraving": "Happy Birthday", "Color": "Navy" } }
进阶需求处理
如果你的需求不止于基础配对,比如:
- 只想保留特定属性(比如只提取"Size"和"Color"):可以在循环里加判断条件过滤
- 要把属性转为数组形式(方便批量操作):把
pairedProps改成数组,循环时push{name: propNames[i], value: propValues[i]} - 处理多订单项场景:在外层加循环,遍历每个订单项的属性数组即可
注意事项
- 正常情况下Shopify会保证两个数组长度一致,但代码里的
propValues[i] || ""能避免异常数据导致的报错 - 如果你更熟悉Python,逻辑完全一致,用字典推导式就能实现:
prop_names = input_data['propNames'] prop_values = input_data['propValues'] paired_props = {name: prop_values[i] for i, name in enumerate(prop_names) if name} return {'pairedProperties': paired_props}
内容的提问来源于stack exchange,提问作者Fabian C
相关产品推荐
相关产品推荐

