Shopify Flowの条件

Shopify Flowでは、多くの場合、アクションを実行するかどうかを制御するために、条件を使用してワークフローでどのパスを実行するかを決定します。条件を設定する際は、チェックするデータフィールド (商品名など)、論理演算子 (equal toなど)、チェックに使用する値 (Blue jeans) を選択します。

条件の例

リスト内の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

この条件文は、以下のように構成します。

  1. 最初の条件に、order / lineItems / product / tagsを選択します。
  2. lineItemsリストで、[同じアイテムの条件を追加する] を選択します。メモ:ここでは、間違ったリスト項目を選択しないよう注意してください。
  3. 最優先のオブジェクトとしてlineItems_itemを選択し、2番目の条件としてproduct / productTypeを選択します。メモ:ここでは、間違ったオブジェクトを選択しないよう注意してください。
  4. ANDを選択して2つの条件を組み合わせます。
  5. これら2つの条件にpresaleclothingの値を入力します。

Flowで使用されるデータのタイプ

Flowの条件の1つ目の値は、ストアから取得されるデータで、GraphQL Admin APIから抽出されます。

Flowでは、以下のデータをサポートしています。

  • 浮動小数: 浮動小数値は、4.25のように小数値を含む数値です。
  • 整数: 整数の値は、42のように小数値を含まない整数です。
  • 日付: 日付の値は、01012021のように日付を数値で表したものです。
  • 文字列: 文字列の値はテキストです。文字列の値を使用した比較では、大文字と小文字の区別がされません。
  • ブーリアン: ブーリアンの値は、trueまたはfalseです。
  • Enum: Enumの値は、1つの変数をあらかじめ定義されたいくつかの定数にできるデータセットです。

論理演算子

論理演算子によって、条件の適用方法が決まります。条件によって、注文の合計が一定の金額を超えているか、お客様がマーケティング情報を受け入れるかなどの単純なプロパティを検証できます。また、論理演算子を使用して、より複雑なプロパティを検証できます。

演算子は、フィールドレベル演算子 (equal tonot equal toなど)、またはリスト演算子 (at least one ofnone ofなど) を使用します。

フィールドレベル演算子

フィールドレベル演算子は、2つの値を比較するために使用します。Flowでは、以下の演算子を使用できます。

と一致する

[Equal to] では、値を比較して、一致するかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amountの値がストアデータから取得され、2つ目の値である50と比較されます。

[と一致する] 論理演算子を使用しているワークフローの例。取得されたデータが50と一致する場合に注文はキャンセルされる

最初の値が50と一致する場合、条件はtrueです。この注文はキャンセルされます。

と一致しない

[Not equal to] を使用すると、値を比較して、一致しないかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amountの値がストアデータから取得され、2つ目の値である50と比較されます。

[と一致しない] 論理演算子を使用しているワークフローの例。取得されたデータが50と一致しない場合に注文はキャンセルされる

最初の値が93の場合、この条件はtrueとなります。この注文はキャンセルされます。

より大きい、以上

[Greater than][Greater than or equal to] を使用すると、値を比較して、1つ目の値が2つ目の値より大きい、または2つ目の値以上であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amountの値がストアデータから取得され、2つ目の値である50と比較されます。

[より大きい] 論理演算子を使用しているワークフローの例。取得されたデータが50より大きい場合に注文はキャンセルされる

ストアから取得された値が137の場合、137は50より大きいので、この条件はtrueとなります。この注文はキャンセルされます。

より小さい、以下

[Less than][Less than or equal to] では、値を比較して、1つ目の値が2つ目の値より小さい、または2つ目の値以下であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amountの値がストアデータから取得され、2つ目の値である50と比較されます。

[以下] 論理演算子を使用しているワークフローの例。取得されたデータが50以下の場合に注文はキャンセルされる

ストアから取得された値が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が含まれる場合、注文はキャンセルされる

ストアから取得された値がguavaの場合、guavaはpineapple、guava、kiwiの配列に含まれるので、この条件はtrueとなります。この注文はキャンセルされます。

not any of

not any of演算子では、フィールドが、指定したリストのどの値とも一致しないことをチェックします。チェックする値は、個別に入力し、次に入力キー (タグと同様) を入力する必要があります。以下の例では、order.lineitem.product.titleの値がストアデータから取得され、2つ目の値セット (pineapple、guava、kiwi) と比較されます。

[のいずれでもない] 論理演算子を使用しているワークフローの例。取得されたデータにpineapple、guava、kiwiが含まれない場合、注文はキャンセルされる

ストアから取得された値がraspberryの場合、raspberryはpineapple、guava、kiwiの配列に含まれないので、この条件はtrueとなります。この注文はキャンセルされます。

を含む

[Includes] を使用すると、値を比較して、1つ目の入力値のいずれかに2つ目の入力値のデータが含まれているかを確認します。以下の例では、order.lineitem.product.titleの値がストアデータから取得され、2つ目の値であるscrapeと比較されます。

[を含む] 論理演算子を使用しているワークフローの例。取得されたデータにscrapeの文字列が含まれる場合、注文はキャンセルされる

ストアデータから取得されたデータがskyscraperの場合、scrapeと合致する文字列が、skyscraperの文字列に含まれているので、この条件はtureとなります。この注文はキャンセルされます。

を含まない

[Does not include] では、値を比較して、1つ目の入力値のいずれにも2つ目の入力値のデータが含まれていないことを確認します。以下の例では、order.lineitem.product.titleの値がストアデータから取得され、2つ目の値であるscrapeと比較されます。

[を含まない] 論理演算子を使用しているワークフローの例。取得されたデータにscrapeの文字列が含まれない場合、注文はキャンセルされる

ストアデータから取得されたデータがscrap-metalの場合、scrapeと合致する文字列は、scrap-metalの文字列に含まれていないので、この条件はtrueとなります。この注文はキャンセルされます。

から始まる

[Starts with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっているかを確認します。以下の例では、order.shippingAddress.countryの値がストアデータから取得され、2つ目の値であるUnitedと比較されます。

[から始まる] 論理演算子を使用しているワークフローの例。取得されたデータがUnitedの文字列から始まる場合、注文はキャンセルされる

ストアデータから取得されたデータがUnited Kingdomの場合、United Kingdomの文字列はUnitedの文字列で始まるので、この条件はtureとなります。この注文はキャンセルされます。

から始まらない

[Does not start with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっていないことを確認します。以下の例では、order.shippingAddress.countryの値がストアデータから取得され、2つ目の値であるUnitedと比較されます。

[から始まらない] 論理演算子を使用しているワークフローの例。取得されたデータがUnitedの文字列から始まらない場合、注文はキャンセルされる

ストアデータから取得されたデータがCanadaの場合、Canadaの文字列はUnitedの文字列で始まらないので、この条件はtureとなります。この注文はキャンセルされます。

下4桁

[Ends with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータで終わっているかを確認します。以下の例では、order.lineitems.product.titleの値がストアデータから取得され、2つ目の値であるlast-availableと比較されます。

[で終わる] 論理演算子を使用しているワークフローの例。取得されたデータがlast-availableの文字列で終わる場合、注文はキャンセルされる

ストアデータから取得されたデータが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の文字列で終わらない場合、注文はキャンセルされる

ストアデータから取得されたデータがathletic socks newの場合、athletic socks newの文字列はlast-availableの文字列で終わらないので、この条件はtureとなります。この注文はキャンセルされます。

Nullまたは空白の演算子

empty or does not exist

データ内の一部のフィールドは空白にすることができます。たとえば、注文がキャンセルされていない場合、order.cancelReasonnullを返します。empty or does not existを使用すると、フィールドが空白またはnullの場合にtrueを返し、存在する場合はfalseを返します。

not empty and exists

データ内の一部のフィールドは空白にすることができます。たとえば、注文がキャンセルされていない場合、order.cancelReasonnullを返します。not empty and existsを使用すると、フィールドが空白ではない場合にtrueを返し、空白の場合にfalseを返します。

リスト演算子

リスト演算子とフィールドレベル演算子を組み合わせることで、リストに含まれるデータの条件をチェックすることができます。

「at least one」の例のように、特定のタグ (order.lineItems.product.tagsのリスト) が付いている特定の商品 (order.lineItemsに存在する) が注文に含まれているかどうかをチェックできます。どちらの場合も、この例では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に変更することです。この演算子は、リストのアイテムが条件と一致しない場合に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ドルより多く支払った場合に、お客様にタグ付けをするワークフローを作成するとします。

[および] 条件を使用しているワークフローの例

そのようなワークフローは、お客様の所在地がカナダにあって、お客様が注文で500ドルより多く支払った場合にのみ、お客様にタグ付けします。いずれかの条件がfalseの場合、お客様にタグ付けはされません。

いずれかの条件が満たされた場合

[If any conditions are met] を選択すると、設定した条件のいずれか1つがtrueの場合に、trueという応答になります。これはプログラミングでいうORステートメントによく似ています。

たとえば、リスクレベルが高または中と思われる注文にタグ付けするワークフローを作成するとします。

[または] 条件を使用しているワークフローの例

ワークフローは、リスクレベルが高か中であれば、注文にタグ付けします。条件のうち1つがtrueであれば、注文はタグ付けされます。

条件とアクションを組み合わせる

複数の条件を組み合わせて1つの大きな条件を作成できます。条件が組み合わされている場合、条件全体がtrueとなるためには、すべての条件を満たす必要があります。いずれかの条件が満たされないと、条件全体がfalseとなります。以下の例では、お客様がマーケティング情報の受領を承認する必要があり、注文の合計金額が特定の基準値を満たしている必要があります。

お客様の支払い額の合計を検証してタグを追加するワークフローの例

同様に、複数のアクションを実行できるように、アクションをまとめて組み合わせることができます。この例では、複数の条件を使用して、お客様がストアで支払った合計金額に基づいてロイヤリティプログラムの対象になるかどうかを確認します。上記の例では、以下の条件が、表示された順番で確認されます。

  1. 合計金額が1,000ドルを超えており、お客様がマーケティングを受け入れることに同意している場合、「金」のタグでタグ付けします。
  2. 合計金額が500ドルを超えており1,000ドル未満で、お客様がマーケティングを受け入れることに同意している場合、「銀」のタグでタグ付けします。
  3. お客様の支払いが200ドルを超えており、マーケティングを受け入れることに同意している場合、「銅」のタグでタグ付けします。

条件内の静的データと動的データ

通常、条件の2つ目の値は静的データで手動で入力されます (product.title == "your title"など)。毎回ワークフローが実行される際に同じ値が使用されます。

2つ目の値のフィールドに</>記号が表示されている場合、動的な値を使用することもできます。動的な値は、ワークフローが実行されるたびにストアデータから抽出されます。動的な値を使用するには、</>記号をクリックして、照合する値を選択します。すべてのフィールドで動的な値を使用できるわけではありません。

たとえば、注文の請求先住所の国が配送先住所の国と一致する場合に、注文をタグ付けするワークフローを作成するとします。

RHSデータを使用した注文にタグ付けするワークフローの例。お客様の請求先国と配送先の国が同じであることを確認します。

この例では、2つ目の値と照合するために手動で静的な文字列を指定するのではなく、1つ目と2つ目の値は両方ストアのデータから抽出されます。お客様が入力した請求先住所の国が、お客様が入力した配送先住所の国と同じであれば、この条件はtrueとなり、この注文はタグ付けされます。

間違ったタイプの動的データを使用する必要がある場合もあります。たとえば、文字列として保存された数字と別の数字を比較する必要がある場合などが考えられます。この場合は、[コードを実行する] オプションを使用して、データを正しいタイプに変換できます。

Shopifyで販売を開始する準備はできていますか?

無料体験を試す