Shopify Flowの条件
状態 if-then ステートメントの開始など、特定のルールが満たされた場合にワークフローを継続します。 状態を設定するときは、 GraphQL Admin APIのフィールド (商品名など) から条件を選択します。 論理演算子( equal to
など)と、チェック対象の値( Blue jeans
)。ワークフローが状態を評価すると、 Flowワークフローで定義された値をストアに返された値と照合し、結果をワークフロー runに表示します。 状態を定義するために使用できるフィールドと値をよりよく理解するには、ストア データをプレビューする方法を学習します。
条件の例
リスト内の1つ以上のアイテムが、条件と一致しているか確認する
この例では、リスト内の少なくとも1つのアイテムが特定値と一致しているかどうかを検証する、一般的な条件文を紹介します。
以下の条件例では、注文内の商品の1つに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の部分はフィールドレベル演算子で、リストアイテムの1つが一致するかどうかをチェックします。
リスト内のいずれのアイテムも条件と一致しないことをチェックする
この例では、リスト内のいずれのアイテムも特定値と一致しないことをチェックするための、一般的な条件文を紹介します。考慮すべき一般的な問題の1つとして、リストが空白の場合があります。リストが空白の場合、条件はリスト演算子 (この場合は「none of」) によって処理されます。
この場合は、以下の条件により、どの商品タグもfooと一致しないかどうかがチェックされます。
If none of product / tags:
tag_item
is equal to
foo
(1) 商品にタグが付いていない無い場合や、(2) どのタグもfooではない場合、この条件はtrue
を返します。それ以外の場合はfalse
を返します。
リスト内のアイテムが複数の条件と一致するかどうかをチェックする
この例では、リスト内の少なくとも1つのアイテムが2つの異なる条件と一致するかどうかをチェックするための、一般的な条件文を紹介します。
以下の条件例では、注文内の商品の1つに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
この条件文は、以下のように構成します。
- 最初の条件に、order / lineItems / product / tagsを選択します。
- lineItemsリストで、[同じアイテムの条件を追加する] を選択します。メモ:ここでは、間違ったリスト項目を選択しないよう注意してください。
- 最優先のオブジェクトとしてlineItems_itemを選択し、2番目の条件としてproduct / productTypeを選択します。メモ:ここでは、間違ったオブジェクトを選択しないよう注意してください。
- ANDを選択して2つの条件を組み合わせます。
- これら2つの条件に
presale
とclothing
の値を入力します。
Flowで使用されるデータのタイプ
条件を設定すると、Admin APIで利用可能なフィールドから基準を選択し、Flowがストアに返された値と比較して評価します。
Flowでは、以下のデータをサポートしています。
- 浮動小数: 浮動小数値は、4.25のように小数値を含む数値です。
- 整数: 整数の値は、42のように小数値を含まない整数です。
- 日付: 日付の値は、01012021のように日付を数値で表したものです。
- 文字列: 文字列の値はテキストです。文字列の値を使用した比較では、大文字と小文字の区別がされません。
- ブーリアン: ブーリアンの値は、trueまたはfalseです。
- Enum: Enumの値は、1つの変数をあらかじめ定義されたいくつかの定数にできるデータセットです。
論理演算子
論理演算子によって、条件の適用方法が決まります。条件によって、注文の合計が一定の金額を超えているか、お客様がマーケティング情報を受け入れるかなどの単純なプロパティを検証できます。また、論理演算子を使用して、より複雑なプロパティを検証できます。
演算子は、フィールドレベル演算子 (equal toやnot equal toなど)、またはリスト演算子 (at least one ofやnone ofなど) を使用します。
フィールドレベル演算子
フィールドレベル演算子は、2つの値を比較するために使用します。Flowでは、以下の演算子を使用できます。
と一致する
[Equal to] では、値を比較して、一致するかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
![[と一致する] 論理演算子を使用しているワークフローの例。取得されたデータが50と一致する場合に注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-equal-to.png)
最初の値が50と一致する場合、条件はtrueです。この注文はキャンセルされます。
と一致しない
[Not equal to] を使用すると、値を比較して、一致しないかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
![[と一致しない] 論理演算子を使用しているワークフローの例。取得されたデータが50と一致しない場合に注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-not-equal-to.png)
最初の値が93の場合、この条件はtrueとなります。この注文はキャンセルされます。
より大きい、以上
[Greater than] や [Greater than or equal to] を使用すると、値を比較して、1つ目の値が2つ目の値より大きい、または2つ目の値以上であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
![[より大きい] 論理演算子を使用しているワークフローの例。取得されたデータが50より大きい場合に注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-greater-than.png)
ストアから取得された値が137の場合、137は50より大きいので、この条件はtrueとなります。この注文はキャンセルされます。
より小さい、以下
[Less than] や [Less than or equal to] では、値を比較して、1つ目の値が2つ目の値より小さい、または2つ目の値以下であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
![[以下] 論理演算子を使用しているワークフローの例。取得されたデータが50以下の場合に注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-less-than.png)
ストアから取得された値が47の場合、47は50以下なので、この条件はtrueとなります。この注文はキャンセルされます。
at least one of
at least one of演算子は、フィールドが、指定したリストの値と一致するかどうかをチェックします。チェックする値は、個別に入力し、次に入力キー (タグと同様) を入力する必要があります。配列を入力せずにAt least one ofを使用すると、正しく評価できません。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値セット (pineapple、guava、kiwi) と比較されます。
![[At least one of] 論理演算子を使用しているワークフローの例。取得されたデータにpineapple、guava、またはkiwiが含まれる場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-any-of.png)
ストアから取得された値がguavaの場合、guavaはpineapple、guava、kiwiの配列に含まれるので、この条件はtrueとなります。この注文はキャンセルされます。
not any of
not any of演算子では、フィールドが、指定したリストのどの値とも一致しないことをチェックします。チェックする値は、個別に入力し、次に入力キー (タグと同様) を入力する必要があります。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値セット (pineapple、guava、kiwi) と比較されます。
![[のいずれでもない] 論理演算子を使用しているワークフローの例。取得されたデータにpineapple、guava、kiwiが含まれない場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-not-any-of.png)
ストアから取得された値がraspberryの場合、raspberryはpineapple、guava、kiwiの配列に含まれないので、この条件はtrueとなります。この注文はキャンセルされます。
を含む
[Includes] を使用すると、値を比較して、1つ目の入力値のいずれかに2つ目の入力値のデータが含まれているかを確認します。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値であるscrapeと比較されます。
![[を含む] 論理演算子を使用しているワークフローの例。取得されたデータにscrapeの文字列が含まれる場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-include.png)
ストアデータから取得されたデータがskyscraperの場合、scrapeと合致する文字列が、skyscraperの文字列に含まれているので、この条件はtureとなります。この注文はキャンセルされます。
を含まない
[Does not include] では、値を比較して、1つ目の入力値のいずれにも2つ目の入力値のデータが含まれていないことを確認します。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値であるscrapeと比較されます。
![[を含まない] 論理演算子を使用しているワークフローの例。取得されたデータにscrapeの文字列が含まれない場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-does-not-include.png)
ストアデータから取得されたデータがscrap-metalの場合、scrapeと合致する文字列は、scrap-metalの文字列に含まれていないので、この条件はtrueとなります。この注文はキャンセルされます。
から始まる
[Starts with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっているかを確認します。以下の例では、order.shippingAddress.country
の値がストアデータから取得され、2つ目の値であるUnitedと比較されます。
![[から始まる] 論理演算子を使用しているワークフローの例。取得されたデータがUnitedの文字列から始まる場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-starts-with.png)
ストアデータから取得されたデータがUnited Kingdomの場合、United Kingdomの文字列はUnitedの文字列で始まるので、この条件はtureとなります。この注文はキャンセルされます。
から始まらない
[Does not start with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっていないことを確認します。以下の例では、order.shippingAddress.country
の値がストアデータから取得され、2つ目の値であるUnitedと比較されます。
![[から始まらない] 論理演算子を使用しているワークフローの例。取得されたデータがUnitedの文字列から始まらない場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-does-not-start-with.png)
ストアデータから取得されたデータがCanadaの場合、Canadaの文字列はUnitedの文字列で始まらないので、この条件はtureとなります。この注文はキャンセルされます。
下4桁
[Ends with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータで終わっているかを確認します。以下の例では、order.lineitems.product.title
の値がストアデータから取得され、2つ目の値であるlast-availableと比較されます。
![[で終わる] 論理演算子を使用しているワークフローの例。取得されたデータがlast-availableの文字列で終わる場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-ends-with.png)
ストアデータから取得されたデータがathletic socks last-availableの場合、athletic socks last-availableの文字列はlast-availableの文字列で終わるので、この条件はtrueとなります。この注文はキャンセルされます。
で終わらない
[Does not end with] では、値を比較して、1つ目の値が2つ目の値のデータで終わっていないことを確認します。以下の例では、order.lineitems.product.title
の値がストアデータから取得され、2つ目の値であるlast-availableと比較されます。
![[で終わらない] 論理演算子を使用しているワークフローの例。取得されたデータがlast-availableの文字列で終わらない場合、注文はキャンセルされる](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/condition-does-not-end-with.png)
ストアデータから取得されたデータがathletic socks newの場合、athletic socks newの文字列はlast-availableの文字列で終わらないので、この条件はtureとなります。この注文はキャンセルされます。
Nullまたは空白の演算子
empty or does not exist
データ内の一部のフィールドは空白にすることができます。たとえば、注文がキャンセルされていない場合、order.cancelReason
はnull
を返します。empty or does not existを使用すると、フィールドが空白またはnull
の場合にtrue
を返し、存在する場合はfalse
を返します。
not empty and exists
データ内の一部のフィールドは空白にすることができます。たとえば、注文がキャンセルされていない場合、order.cancelReason
はnull
を返します。not empty and existsを使用すると、フィールドが空白ではない場合にtrue
を返し、空白の場合にfalse
を返します。
リスト演算子
リスト演算子とフィールドレベル演算子を組み合わせることで、リストに含まれるデータの条件をチェックすることができます。
「at least one」の例のように、特定のタグ (order.lineItems.product.tags
のリスト) が付いている特定の商品 (order.lineItems
に存在する) が注文に含まれているかどうかをチェックできます。どちらの場合も、この例ではat least one ofのリスト演算子が使用されます。
Flowではリストと連携して実行できる次の3つの演算子を利用できます:At least one of、None of、All of。
at least one of
リストでは、一般的にat least one ofの条件が使用されます。この演算子は、リストのアイテムが条件と一致する場合にtrue
を返します。たとえば、特定のタグが付いた商品が注文に含まれているかをチェックする場合は、at least one ofを使用します。リストが空白の場合や、条件が満たされていない場合は、false
が返されます。
のすべて一致なし
また、リストにアイテムが含まれていないことをチェックすることもできます。この条件文を構成する最善の方法は、リスト演算子をnone ofに変更することです。この演算子は、リストのアイテムが条件と一致しない場合にtrue
を返します。重要:リストが空白の場合もtrue
を返します。たとえば、商品にpresale
タグが付いていないことをチェックする場合は、None of product tags is equal to presale
を使用します。
のすべて
リスト内のすべてのアイテムが条件と一致するかどうかをチェックすることもできます。たとえば、注文のすべてのアイテムに「Acme
」という特定の商品販売元名が含まれているかチェックすることなどが可能です。この場合は、All of order line items have a product.vendor equal to Acme
を使用します。
条件の順序
複数の条件を持つワークフローを作成することができ、各条件はそれぞれ異なるアクションとなります。条件の順序は重要です。条件の確認は、ワークフローの開始時に開始され、各条件を通じて体系的に進められます。条件が満たされると、確認は停止します。
1つの条件文に複数の条件を組み合わせる
条件文を構成する際は、複数の条件を設定することができます。また、その各条件の組み合わせ方も選択できます。
すべての条件が満たされた場合
if all conditions are metを選択すると、設定したすべての条件がtrueの場合にのみtrueが返されます。これはプログラミングでのAND
ステートメントによく似ています。
たとえば、お客様の所在地がカナダにあって、一度の注文で500ドルより多く支払った場合に、お客様にタグ付けをするワークフローを作成するとします。
![[および] 条件を使用しているワークフローの例](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/and-condition.png)
そのようなワークフローは、お客様の所在地がカナダにあって、お客様が注文で500ドルより多く支払った場合にのみ、お客様にタグ付けします。いずれかの条件がfalseの場合、お客様にタグ付けはされません。
いずれかの条件が満たされた場合
[いずれかの条件が満たされた場合] を選択すると、設定した条件のいずれか1つがtrueの場合に、trueという応答になります。これはプログラミングにおける OR
ステートメントに似ています。
たとえば、リスクレベルが高または中と思われる注文にタグ付けするワークフローを作成するとします。
![[または] 条件を使用しているワークフローの例](https://cdn.shopify.com/shopifycloud/help-center/manual/apps/flow/flowv2/or-condition.png)
ワークフローは、リスクレベルが高か中であれば、注文にタグ付けします。条件のうち1つがtrueであれば、注文はタグ付けされます。
条件とアクションを組み合わせる
複数の条件を組み合わせて1つの大きな条件を作成できます。条件が組み合わされている場合、条件全体がtrueとなるためには、すべての条件を満たす必要があります。いずれかの条件が満たされないと、条件全体がfalseとなります。以下の例では、お客様がマーケティング情報の受領を承認する必要があり、注文の合計金額が特定の基準値を満たしている必要があります。

同様に、複数のアクションを実行できるように、アクションをまとめて組み合わせることができます。この例では、複数の条件を使用して、お客様がストアで支払った合計金額に基づいてロイヤリティプログラムの対象になるかどうかを確認します。上記の例では、以下の条件が、表示された順番で確認されます。
- 合計金額が1,000ドルを超えており、お客様がマーケティングを受け入れることに同意している場合、「金」のタグでタグ付けします。
- 合計金額が500ドルを超えており1,000ドル未満で、お客様がマーケティングを受け入れることに同意している場合、「銀」のタグでタグ付けします。
- お客様の支払いが200ドルを超えており、マーケティングを受け入れることに同意している場合、「銅」のタグでタグ付けします。
条件内の静的データと動的データ
通常、条件の2つ目の値は静的データで手動で入力されます (product.title == "your title"
など)。毎回ワークフローが実行される際に同じ値が使用されます。
2つ目の値のフィールドに</>
記号が表示されている場合、動的な値を使用することもできます。動的な値は、ワークフローが実行されるたびにストアデータから抽出されます。動的な値を使用するには、</>
記号をクリックして、照合する値を選択します。すべてのフィールドで動的な値を使用できるわけではありません。
たとえば、注文の請求先住所の国が配送先住所の国と一致する場合に、注文をタグ付けするワークフローを作成するとします。

この例では、2つ目の値と照合するために手動で静的な文字列を指定するのではなく、1つ目と2つ目の値は両方ストアのデータから抽出されます。お客様が入力した請求先住所の国が、お客様が入力した配送先住所の国と同じであれば、この条件はtrueとなり、この注文はタグ付けされます。
間違ったタイプの動的データを使用する必要がある場合もあります。たとえば、文字列として保存された数字と別の数字を比較する必要がある場合などが考えられます。この場合は、[Run code] オプションを使用して、データを正しいタイプに変換できます。
テンプレート
テンプレートライブラリーのほとんどのテンプレートには、条件が設けられています。