Shopify Flowの条件
Shopify Flowでは、多くの場合、アクションを 実行するかどうかを制御するために、条件を使用してワークフローでどのパスを実行するかを決定します。条件を設定する際は、チェックするデータフィールド (商品名など)、論理演算子 (equal to
など)、チェックに使用する値 (Blue jeans
) を選択します。
条件の例
リスト内の1つ以上のアイテムが、条件と一致し ているか確認する
この例では、リスト内の少なくとも1つのアイテムが特定値と一致しているかどうかを検証する、一般的な条件文を紹介します。
以下の条件例では、注文内の商品の1つにpresale
のタグが付いているかどうかが検証されます。この条件を構築するには、order / lineItems / product / tags
を選択します。Flowではデフォルトで、論理演算子として [at least one of] が選択されます。
at least one ofの部分はリスト演算子で、複数のリストアイテムの一致を処理する際に使用されます。is equal toの部分はフィールドレベル演算子で、リストアイテムの1つが一致するかどうかをチェックします。
リスト内のいずれのアイテムも条件と一致しないことをチェックする
この例では、リスト内のいずれのアイテムも特定値と一致しないことをチェックするための、一般的な条件文を紹介します。考慮すべき一般的な問題の1つとして、リストが空白の場合があります。リストが空白の場合、条件はリスト演算子 (この場合は「none of」) によって処理されます。
この場合は、以下の条件によ り、どの商品タグもfooと一致しないかどうかがチェックされます。
(1) 商品にタグが付いていない無い場合や、(2) どのタグもfooではない場合、この条件はtrue
を返します。それ以外の場合はfalse
を返します。
リスト内のアイテムが複数の条件と一致するかどうかをチェックする
この例では、リスト内の少なくとも1つのアイテムが2つの異なる条件と一致するかどうかをチェックするための、一般的な条件文を紹介します。
以下の条件例では、注文内の商品の1つにpresale
のタグが付いているかどうか、かつproductTypeがclothing
かどうかがチェックされます。
この条件文は、以下のように構成します。
- 最初の条件に、order / lineItems / product / tagsを選択します。
- lineItemsリストで、[同じアイテムの条件を追加する] を選択します。メモ:ここでは、間違ったリスト項目を選択しないよう注意してください。
- 最優先のオブジェクトとしてlineItems_itemを選択し、2番目の条件としてproduct / productTypeを選択します。メモ:ここでは、間違ったオブジェクトを選択しないよう注意してください。
- ANDを選択して2つの条件を組み合わせます。
- これら2つの条件に
presale
とclothing
の値を入力します。
Flowで使用されるデータのタイプ
Flowの条件の1つ目の値は、ストアから取得されるデータで、GraphQL Admin APIから抽出されます。
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と一致する場合、条件はtrueです。この注文はキャンセルされます。
と一致しない
[Not equal to] を使用すると、値を比較して、一致しないかどうかを確認します。以下の 例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
最初の値が93の場合、この条件はtrueとなります。この注文はキャンセルされます。
より大きい、以上
[Greater than] や [Greater than or equal to] を使用すると、値を比較して、1つ目の値が2つ目の値より大きい、または2つ目の値以上であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である50と比較されます。
ストアから取得された値が137の場合、137は50より大きいので、この条件はtrueとなります。この注文はキャンセルされます。
より小さい、以下
[Less than] や [Less than or equal to] では、値を比較して、1つ目の値が2つ目の値より小さい、または2つ目の値以下であるかどうかを確認します。以下の例では、order.currentTotalDiscountsSet.shopMoney.amount
の値がストアデータから取得され、2つ目の値である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) と比較されます。
ストアから取得された値がguavaの場合、guavaはpineapple、guava、kiwiの配列に含まれるので、この条件はtrueとなります。この注文はキャンセルされます。
not any of
not any of演算子では、フィールドが、指定したリストのどの値とも一致しないことをチェックします。チェックする値は、個別に入力し、次に入力キー (タグと同様) を入力する必要があります。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値セット (pineapple、guava、kiwi) と比較されます。
ストアから取得された値がraspberryの場合、raspberryはpineapple、guava、kiwiの配列に含まれないので、この条件はtrueとなります。この注文はキャンセルされます。
を含む
[Includes] を使用すると、値を比較して、1つ目の入力値のいずれかに2つ目の入力値のデータが含まれているかを確認します。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値であるscrapeと比較されます。
ストアデータから取得されたデ ータがskyscraperの場合、scrapeと合致する文字列が、skyscraperの文字列に含まれているので、この条件はtureとなります。この注文はキャンセルされます。
を含まない
[Does not include] では、値を比較して、1つ目の入力値のいずれにも2つ目の入力値のデータが含まれていないことを確認します。以下の例では、order.lineitem.product.title
の値がストアデータから取得され、2つ目の値であるscrapeと比較されます。
ストアデータから取得されたデータがscrap-metalの場合、scrapeと合致する文字列は、scrap-metalの文字列に含まれていないので、この条件はtrueとなります。この注文はキャンセルされます。
から始まる
[Starts with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっているかを確認します。以下の例では、order.shippingAddress.country
の値がストアデータから取得され、2つ目の値であるUnitedと比較されます。
ストアデータから取得されたデータがUnited Kingdomの場合、United Kingdomの文字列はUnitedの文字列で始まるので、この条件はtureとなります。この注文はキャンセルされます。
から始まらない
[Does not start with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータから始まっていないことを確認します。以下の例では、order.shippingAddress.country
の値がストアデータから取得され、2つ目の値であるUnitedと比較されます。
ストアデータから取得されたデータがCanadaの場合、Canadaの文字列はUnitedの文字列で始まらないので、この条件はtureとなります。この注文はキャンセルされます。
下4桁
[Ends with] を使用すると、値を比較して、1つ目の値が2つ目の値のデータで終わっているかを確認します。以下の例では、order.lineitems.product.title
の値がストアデータから取得され、2つ目の値であるlast-availableと比較されます。