for each 循环(迭代)

当“For each 循环(迭代)”操作连接到“为每个项目重复”选项时,它会对列表中的每个项目执行步骤。此操作仅适用于列表,例如订单中的订单项目,或由任何“获取数据”类型操作返回的列表,例如获取产品系列数据获取客户数据获取产品数据

添加“For each 循环(迭代)”操作后,您必须配置有关循环如何迭代所提供列表中的每个项目的其他步骤。与条件的 True/False 分支不同,“For each 循环(迭代)”操作的分支具有已定义的操作顺序:

  1. 为每个项目重复”分支首先出现,并重复要对列表中的每个条目执行的步骤。此分支中的操作执行次数与所提供列表中的项目数量相同。
  2. 在最后一个项目之后”分支最后出现,可让您定义继续工作流的步骤。在“为每个项目重复”分支对列表中的每个项目执行完所有操作后,才会执行此步骤。

例如,您创建了一个在每周一运行的工作流。该工作流使用 获取订单数据 操作来检索该周内下单的订单。然后,“For each 循环(迭代)”会为 getOrderData 列表返回的每个订单应用 New order 标签。在列表中的所有订单都添加标签后,系统会发送一封内部电子邮件,指明标签添加操作已完成。

工作流示例:检索过去一周的订单列表,为每个订单添加标签,然后发送电子邮件。

使用“For each 循环(迭代)”操作的注意事项

在使用“For each 循环(迭代)”操作之前,请查看以下注意事项:

  • 您在“For each 循环(迭代)”操作中使用的列表不能包含超过 1,000 个项目。如果所选列表包含超过 1,000 个项目,则工作流将失败,并且不会执行“For each 循环(迭代)”操作之后的所有操作。
  • 以下操作不能跟在 为每个项目重复
    • 等待操作。
    • 任何获取数据操作,例如获取订单数据
    • 运行代码操作。
  • 您只能在另一个“For each 循环(迭代)”操作内嵌套 1 个“For each 循环(迭代)”操作。

字段

For each 循环(迭代)”操作包含以下字段。

“For each”操作中使用的字段。
字段描述
列表必填。要对其执行操作的项目列表。例如,此列表可以是 获取数据运行代码 操作返回的列表,或者是触发器返回的列表,例如 订单已创建 触发器返回的订单项目列表。

选择变量时,只有数组对象 ([]) 会显示为可选选项。

触发器

For each 循环(迭代)”操作可用于任何工作流。

监控工作流

工作流运行后,您可以在 Shopify Flow 的**活动**页面上查看其表现。包含 **For each 循环(迭代)**操作的工作流具有以下特点:

  • **状态**和**操作**部分适用于 **For each 循环(迭代)**操作执行的所有操作。
  • 工作流预览会突出显示循环中有多少个项目遵循了特定路径。
  • **运行详细信息**部分(包括工作流预览)会显示每次循环迭代的结果。在运行的步骤详细信息中使用**项目**菜单,可按执行的操作和错误筛选结果,以便快速对循环进行故障排查。

包含 For each 循环的最近一次运行的步骤数据示例。该步骤数据示例突出显示了“项目”菜单,方便您选择要查看其步骤数据的 7 个项目中的哪一个。

模板

在新订单下单时将订单项目添加到 Google Sheets 行

创建新订单时,工作流中的 **For each 循环(迭代)**步骤将遍历每个订单项目,以将产品数据添加到 Google Sheet 行中。 查看模板

在未来将带特定标签的产品添加到产品系列

在未来的某个时间,获取所有带特定标签的产品,然后将其添加到产品系列中。 查看模板

允许通过公司账户请求创建的公司进行订购

通过公司账户请求创建公司时,为其分配订购权限。 查看模板

如果客户今天下单超过 5 次,则取消订单

如果客户在一天内下单超过 5 次,则取消订单。此模板会检查客户在过去 24 小时内下单的数量,取消超出此限制的任何订单,并为客户添加潜在欺诈标签。 查看模板

将所有客户的客户元字段转换为标签

此工作流会根据元字段值为您的所有客户回填标签。它每小时运行一次,并获取最多 100 位没有 processed 标签的客户。对于每位客户,它会查看 custom.test 元字段的值,并将其添加为标签。此工作流还会添加一个 processed 标签,这样在工作流的下一次计划运行中就不会返回该客户。若要使用此工作流,您必须更改元字段命名空间和键以匹配您商店中的元字段。 查看模板

删除不活跃的客户

删除超过 5 年且从未下过单的客户资料。 查看模板

删除不活跃的产品

删除没有库存且一年内未更新的产品。 查看模板

为订单中的任何数字商品发货

为任何无需实体配送的商品(例如数字商品)或与 SKU 列表匹配的商品发货。新订单的每个发货地点(即“发货订单”)运行一次。 查看模板

如果客户在 24 小时内下了多个订单,则暂停发货

检查客户是否在 24 小时内下了多个订单。如果为是,则暂停发货并合并配送。 查看模板

如果客户在过去 24 小时内下单超过 1 次,则将订单设为暂停处理状态

创建订单时,检查客户在过去 24 小时内是否下了任何其他订单。如果是,则将所有订单设为暂停处理状态。 查看模板

在未来发布带特定标签的产品

在未来的某个日期,获取带特定标签的产品并将其发布。此工作流使用**计划时间**触发器和**获取产品数据**操作。 查看模板

在退货已结案时解除换货商品的暂停发货状态

当退货已结案时,检查订单上是否有未清账款。如果订单没有余额,则解除对换货商品的暂停发货状态。查看模板

在产品创建 90 天后删除“新产品”标签

此工作流每天会获取最多 100 个在 90 多天前创建且仍带有 new 标签的产品。然后,此工作流会删除每个产品的这些标签。 查看模板

计划在指定的日期和时间从在线商店中删除产品

在未来的某个日期,按标签、ID 或 SKU 从在线商店中删除产品。此模板利用**计划时间**触发器和**获取产品数据**操作。 查看模板

将 B2B 订单发票发送到多个电子邮件地址

将 B2B 订单的发票发送到多个电子邮件地址。此模板使用公司地点中另存为元字段的电子邮件地址(如果存在);如果不存在,则首先创建 extra_invoice_recipient.email1.email2.email3 这 3 个元字段。 查看模板

将订单和订单项目发送到 Google Sheets

将每个订单项目输出到 Google Sheets 的某一行中。 查看模板

为延迟发货添加标签并发送每日摘要

每天为所有未满足 2 天送达保证的订单添加标签,并发送每日电子邮件摘要,其中统计了这些订单的总数和美元价值。 查看模板

为有拒付的客户添加标签

每小时,此工作流都会获取含拒付的订单,并为相应订单的客户添加标记。它使用了计划时间触发器和获取订单数据操作。 查看模板

为订单添加关联的 UTM 宣传活动标签

为包含任何关联 UTM 宣传活动名称的订单添加标签。 查看模板

为超过 2 天的未发货订单添加标签

此工作流每天会获取所有超过 2 天的未发货订单,并为这些订单添加标签。 查看模板

使用产品元字段跟踪正在促销的产品多属性

如果产品的至少一个多属性正在促销,则为此产品设置一个元字段。这对于跟踪当前正在促销的产品非常有用。 查看模板