Shopify Flow 中的条件

在 Shopify Flow 中,条件用于确定工作流中应遵循的路径,通常用于控制是否执行某项操作。设置条件时,您可以选择要检查的数据字段(例如产品标题)、逻辑运算符(例如 equal to)和要对照检查的值(例如 Blue jeans)。

示例条件

检查列表中是否至少有一项与条件匹配

此示例显示了一个典型条件,用于检查列表中是否至少有一项与特定值匹配。

在此示例中,这个条件会检查订单中的某一产品是否具有标签 presale。若要构建此条件,您可以选择 order / lineItems / product / tags。默认情况下,Flow 选择 at least one of 作为逻辑运算符:

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale

at least one of 部分属于列表运算符,用于处理多个列表项之间的匹配。is equal to 部分属于字段级运算符,用于确定单个列表项是否匹配。

检查列表中的各项是否均与条件不匹配

此示例显示了一个典型条件,用于检查列表中的各项是否均与特定值不匹配。需要考虑的一个常见问题是列表可以为空。列表为空时,条件将由列表运算符处理(在此示例中为 none of)。

在此示例中,这个条件会检查是否各个产品标签均不等于 foo:

If none of product / tags:
  tag_item
  is equal to
  foo

如果 (1) 没有产品标签或 (2) 各个标签均不为 foo,该条件将返回 true。否则,它将返回 false

检查列表中的某项是否与多个条件匹配

此示例显示了一个典型条件,用于检查列表中是否至少有一项与两个独立条件匹配。

在此示例中,这个条件会检查订单中的某一产品是否具有标签 presale 及其 productType 是否为 clothing

If at least one of order / lineItems:
  If at least one of lineItem_item / product / tags
    tags_item
    is equal to
    presale
  AND
  If lineItem_item / product
    productType
    is equal to
    clothing

若要构建此条件,您应:

  1. 为第一个条件选择 order / lineItems / product / tags
  2. lineItems 列表中选择添加用于相同项的条件。注:在此处选择错误的列表项是一个常见错误。
  3. 选择 lineItems_item 作为顶级对象,然后选择 product / productType 作为第二个条件。注:在此处选择错误的对象也是一个常见错误。
  4. 选择 AND 以组合两个条件。
  5. 输入值 presaleclothing 作为两个条件。

用于 Flow 的数据类型

任何 Flow 条件中的第一个值都是从商店获得的数据,并且提取自 GraphQL 后台 API

Flow 支持以下类型的数据:

  • 浮动:浮动值是包含小数的数字。例如,4.25。
  • 整数:整数值不含小数。例如,42。
  • 日期:日期值是日期的数字表示形式。例如,01012021。
  • 字符串:字符串值是文本。使用字符串值进行的比较不区分大小写。
  • 布尔值:布尔值是 true 或 false。
  • 枚举:枚举值是一组数据,允许变量是一组预定义常量。

逻辑运算符

逻辑运算符定义条件的应用方式。条件可以检查简单的属性,例如订单总额是否超过一定金额,或客户是否接受营销。逻辑运算符还可以检查更复杂的属性。

运算符可以是字段级运算符(例如 equal tonot equal to),也可以是列表运算符,例如 at least one ofnone of

字段级运算符

字段级运算符用于比较两个值。Flow 可以使用以下运算符:

Equal to

Equal to 用于比较值,以检查值是否相同。在下面的示例中,工作流将从您的商店数据中检索 order.currentTotalDiscountsSet.shopMoney.amount 的值并将其与第二个值 (50) 进行比较。

使用 equal to 逻辑运算符的工作流示例,该工作流在检索到的数据等于 50 时取消订单

如果第一个值等于 50,则条件为 true。订单将被取消。

Not equal to

Not equal to 用于比较值,以检查值是否不同。在下面的示例中,工作流将从您的商店数据中检索 order.currentTotalDiscountsSet.shopMoney.amount 的值并将其与第二个值 (50) 进行比较。

使用 not equal to 逻辑运算符的工作流示例,该工作流在检索到的数据不等于 50 时取消订单

如果第一个值等于 93,则条件为 true。订单将被取消。

Greater than 和 Greater than or equal to

Greater thanGreater than or equal to 用于比较值,以检查第一个值是大于还是大于或等于第二个值。在下面的示例中,工作流将从您的商店数据中检索 order.currentTotalDiscountsSet.shopMoney.amount 的值并将其与第二个值 (50) 进行比较。

使用 greater than 逻辑运算符的工作流示例,该工作流在检索到的数据大于 50 时取消订单

如果从商店提取的值为 137,则条件为 true,因为 137 大于 50。订单将被取消。

Less than 和 Less than or equal to

Less thanLess than or equal to 用于比较值,以检查第一个值是否小于或是小于或等于第二个值。在下面的示例中,工作流将从您的商店数据中检索 order.currentTotalDiscountsSet.shopMoney.amount 的值并将其与第二个值 (50) 进行比较。

使用 less than 或 equal to 逻辑运算符的工作流示例,该工作流在检索到的数据小于或等于 50 时取消订单

如果从商店提取的值为 47,则条件为 true,因为 47 小于或等于 50。订单将被取消。

At least one of

At least one of 运算符检查字段是否等于所提供列表中的任何值。必须逐个输入要检查的值,然后按 Enter 键(类似于标签)。对空白数组使用 At least one of 会导致误报。在下面的示例中,工作流从商店数据中检索 order.lineitem.product.title 的值并将其与第二组值 (pineapple, guava, kiwi) 进行比较。

使用 At least one of 逻辑运算符的工作流示例,该工作流在检索到的数据中包括 pineapple、guava 或 kiwi 时取消订单

如果从商店提取的值为 guava,则条件为 true,因为 pineapple, guava, kiwi 数组中包含 guava。订单将被取消。

Not any of

Not any of 运算符检查字段是否不等于所提供列表中的任何值。必须逐个输入要检查的值,然后按 Enter 键(类似于标签)。在下面的示例中,工作流从商店数据中检索 order.lineitem.product.title 的值并将其与第二组值 (pineapple, guava, kiwi) 进行比较。

使用 not any of 逻辑运算符的工作流示例,该工作流在检索到的数据中不包括 pineapple、guava 或 kiwi 时取消订单

如果从商店提取的值为 raspberry,则条件为 true,因为 pineapple, guava, kiwi 数组中不包含 raspberry。订单将被取消。

Includes

Includes 用于比较值,以检查任意的第一个值输入是否包括第二个值输入中的数据。在下面的示例中,工作流将从您的商店数据中检索 order.lineitem.product.title 的值并将其与第二个值 (scrape) 进行比较。

使用 includes 逻辑运算符的工作流示例,该工作流在检索到的数据中包括字符串 scrape 时取消订单

如果从商店数据中提取的值为 skyscraper,则条件为 true,因为字符串 skyscraper 中包括 scrape 字符串的精确匹配字符串。订单将被取消。

Does not include

Does not include 用于比较值,以检查任意的第一个值输入是否不包含第二个值输入中的数据。在下面的示例中,工作流将从您的商店数据中检索 order.lineitem.product.title 的值并将其与第二个值 (scrape) 进行比较。

使用 does not include 逻辑运算符的工作流示例,该工作流在检索到的数据中不包括字符串 scrape 时取消订单

如果从您的商店数据中提取的值为 scrap-metal,则条件为 true,因为字符串 scrap-metal 中不包括 scrape 字符串的精确匹配字符串。订单将被取消。

Starts with

Starts with 用于比较值,以检查第一个值是否以第二个值中的数据为开头。在下面的示例中,工作流将从您的商店数据中检索 order.shippingAddress.country 的值并将其与第二个值 (United) 进行比较。

使用 start with 逻辑运算符的工作流示例,该工作流在检索到的数据以字符串 United 开头时取消订单

如果从商店提取的值为 United Kingdom,则条件为 true,因为字符串 United Kingdom 以字符串 United 开头。订单将被取消。

Does not start with

Does not start with 用于比较值,以检查第一个值是否不以第二个值中的数据为开头。在下面的示例中,工作流将从您的商店数据中检索 order.shippingAddress.country 的值并将其与第二个值 (United) 进行比较。

使用 does not start with 逻辑运算符的工作流示例,该工作流在检索到的数据不以字符串 United 开头时取消订单

如果从商店提取的值为 Canada,则条件为 true,因为字符串 United Kingdom 不以字符串 Canada 开头。订单将被取消。

Ends with

Ends with 用于比较值,以检查第一个值是否以第二个值中的数据为结尾。在下面的示例中,工作流将从您的商店数据中检索 order.lineitems.product.title 的值并将其与第二个值 (last-available) 进行比较。

使用 ends with 逻辑运算符的工作流示例,该工作流在检索到的数据以字符串 last-available 结尾时取消订单

如果从商店提取的值为 athletic socks last-available,则条件为 true,因为字符串 athletic socks last-available 以字符串 last-available 结尾。订单将被取消。

Does not end with

Does not start with 用于比较值,以检查第一个值是否不以第二个值中的数据为开头。在下面的示例中,工作流将从您的商店数据中检索 order.lineitems.product.title 的值并将其与第二个值 (last-available) 进行比较。

使用 does not end with 逻辑运算符的工作流示例,该工作流在检索到的数据不以字符串 last-available 结尾时取消订单

如果从商店提取的值为 athletic socks new,则条件为 true,因为字符串 athletic socks new 不以字符串 last-available 结尾。订单将被取消。

null 或空运算符

Empty or does not exist

数据中的某些字段可以为空。例如,如果订单未被取消,则 order.cancelReason 将返回 null。如果要在字段为空或 null 时返回 true,在字段存在时返回 false,请使用 empty or does not exist

Not empty and exists

数据中的某些字段可以为空。例如,如果订单未被取消,则 order.cancelReason 将返回 null。如果要在字段不为空时返回 true,在字段为空时返回 false,请使用 Not empty and exists

列表运算符

组合使用列表运算符和字段级运算符可针对列表中包含的数据来检查条件。

“at least one”示例一样,您可能需要检查订单是否包含特定产品(位于 order.lineItems)且具有特定标签(order.lineItems.product.tags下的列表)。在这两种情况下,示例使用 at least one of 列表运算符。

Flow 提供 3 个适用于列表的运算符:At least one ofNone ofAll of

At least one of

大多数用于列表的条件都需要使用 At least one of。如果列表中的任何项与条件匹配,此运算符将返回 true。例如,如果您想检查订单是否包含具有特定标签的产品,则可以使用 At least one of。当列表为空或不符合条件时,条件将返回 false

None of

在某些情况下,您可能需要检查列表是否不包含某项。构建此条件的最佳方法是将列表运算符更改为 None of。如果列表中的各项均与条件不匹配,此运算符将返回 true。请注意,如果列表为空,它也会返回 true。例如,如果您想检查产品是否不包含标签 presale,则可以使用 None of product tags is equal to presale

All of

在少数情况下,您可能需要检查列表中的所有项是否与条件匹配。例如,您可能需要检查订单中的所有项是否都有名为 Acme 的特定产品厂商。为此,您可以使用 All of order line items have a product.vendor equal to Acme

设置条件顺序

您可以创建包含多个条件的工作流,每个条件都可以触发不同的操作。条件的顺序很重要。工作流启动时便开始检查条件,并有序逐一检查每个条件。当满足某个条件时,检查便会停止。

将多个条件组合为一个条件

构建条件时,您可以设置多个条件。您可以选择独立条件的组合方式。

如果满足所有条件

选择 If all conditions are met 后,只有当您设置的所有条件都为 true 时,工作流才会返回 true 响应。这与编程中的 AND 语句类似。

例如,您创建一个工作流来为位于加拿大且单个订单花费金额超过 500 美元的客户添加标签。

使用 and 条件的工作流示例

只有当客户位于加拿大并且订单花费金额超过 500 美元时,工作流才会为客户添加标签。如果其中任一条件为 false,则工作流不会为客户添加标签。

如果满足任意条件

选择 If any conditions are met 后,如果您设置的任一条件为 true,工作流都会返回 true 响应。这与编程中的 OR 语句类似。

例如,您创建一个工作流来为被视为存在高风险或中风险的订单添加标签。

使用 or 条件的工作流示例

无论订单存在高风险还是中风险,工作流都会为订单添加标签。只要其中一个条件为 true,工作流就会为订单添加标签。

组合条件和操作

您可以将多个条件组合在一起,创建一个较大的条件。组合条件后,只有满足所有条件才能使整个条件为 true。如果有任何一个条件未满足,则整个条件为 false。在下面的示例中,客户必须接受营销材料并且其订单总额必须高于特定阈值。

用于检查客户的总消费金额并添加标签的工作流示例

类似地,您可以将操作组合在一起,以便可以运行多个操作。本示例使用多个条件并基于客户在商店中的总消费金额来检查客户是否有资格参与忠诚计划。上面的示例按照显示顺序对下列条件进行了检查:

  1. 如果总价高于 1000 美元并且客户同意接受营销,则使用金牌标签对他们进行标记。
  2. 如果总价低于 1000 美元但超过 500 美元,并且客户同意接受营销,则使用银牌标签对他们进行标记。
  3. 如果客户消费了 200 美元以上并且同意接受营销,则使用铜牌标签对他们进行标记。

条件中的静态和动态数据

通常,条件中的第二个值是静态的手动输入值(例如 product.title == "your title")。每次运行工作流时,此值保持不变。

如果第二个值的字段显示 </> 符号,则表示您也可以使用动态值。工作流每次运行时都会从您的商店数据中提取动态值。若要使用动态值,请点击 </> 符号并选择要检查的值。动态值并非在所有字段都可用。

例如,您可以创建一个工作流,当订单账单地址中的国家/地区与收货地址中的国家/地区匹配时,该工作流将为订单添加标签。

使用 RHS 数据为订单添加标签的工作流示例,该工作流检查客户的账单地址和收货地址中的国家/地区是否相同。

在此示例中,第一个值和第二个值均提取自商店数据,而不是手动指定要相较于第二个值检查的静态字符串。如果客户提供的账单地址中的国家/地区与客户在收货地址中提供的国家/地区相同,则条件为 true,并且工作流将为订单添加标签。

您有时可能需要使用类型错误的动态数据。例如,您可能需要将存储为字符串的数字与其他数字进行比较。在这种情况下,您可以使用运行代码选项将数据转换为正确的类型。

准备好开始使用 Shopify 进行销售了吗?

免费试用