Shopify Flow の条件
条件とは、if-then ステートメントの開始部分など、特定のルールが満たされた場合にワークフローを継続させるものです。条件を設定する際には、GraphQL Admin API のフィールド (product.title など) から基準、論理演算子 (次と等しいなど)、および照合する値 (ブルージーンズなど) を選択します。ワークフローで条件が評価されると、Flow はワークフローで定義された値とストアから返された値を照合し、その結果をワークフローの実行に表示します。条件を定義するために使用できるフィールドと値をより深く理解するには、ストアデータをプレビューする方法をご覧ください。
「条件の基本を理解する」に関する詳細情報をご覧ください。
Flow で使用されるデータ型
条件を設定する際には、Admin API で使用できるフィールドから基準を選択します。Flow はその基準を、ストアから返された値と照合して評価します。
Flow は、以下の種類のデータをサポートしています。
- Float: Float 値は、小数点以下の値を持つ数値です。たとえば、4.25 です。
- Integer: Integer 値は、小数点以下の値を持たない整数です。たとえば、42 です。
- Date: Date 値は、日付を数値で表したものです。たとえば、01012021 です。
- String: String 値はテキストです。String 値を使用した比較では、大文字と小文字は区別されません。
- Boolean: Boolean 値は、true または false のいずれかです。
- Enum: Enum 値は、変数を一連の定義済み定数に設定できるようにするデータのセットです。
論理演算子
論理演算子は、条件をどのように適用するかを定義します。条件を使用して、注文の合計が特定の金額を超えているか、お客様がマーケティングを受け入れているかなど、単純なプロパティを確認できます。論理演算子では、より複雑なプロパティを確認することもできます。
演算子には、次と等しいや次と等しくないなどのフィールドレベルの演算子と、次のいずれかや次のいずれでもないなどのリスト演算子があります。
フィールドレベルの演算子
フィールドレベルの演算子は、2 つの値を比較するために使用されます。Flow では、以下の演算子を使用できます。
| 演算子 | 説明 | 例 |
|---|---|---|
| 次と等しい | 値が同じであるかどうかを比較して確認します。 |
order.currentTotalDiscountsSet.shopMoney.amount の値がストアのデータから取得され、2番目の値である 50 と比較されます。注文の合計ディスカウント額がちょうど 50 の場合、条件は真になります。 |
| 次と等しくない | 値が同じでないかどうかを比較して確認します。 |
order.currentTotalDiscountsSet.shopMoney.amount の値がストアのデータから取得され、2番目の値である 50 と比較されます。注文の合計ディスカウント額が 50 でない場合、条件は真になります。 |
| 次より大きいおよび次以上 | 最初の値が 2 番目の値より大きいか、または以上であるかを比較して確認します。 |
order.currentTotalDiscountsSet.shopMoney.amount の値がストアのデータから取得され、2番目の値である 50 と比較されます。137 は 50 よりも大きいため、注文の合計ディスカウント額が 137 の場合、条件は真になります。 |
| 次より小さいおよび次以下 | 最初の値が 2 番目の値より小さいか、または以下であるかを比較して確認します。 |
order.currentTotalDiscountsSet.shopMoney.amount の値がストアのデータから取得され、2番目の値である 50 と比較されます。47 は 50 以下であるため、注文の合計ディスカウント額が 47 の場合、条件は真になります。 |
| 次のいずれかと等しい | フィールドが、指定されたリスト内のいずれかの値と等しいかどうかを確認します。値は個別に入力し、Enter キーを押す必要があります (タグと同様)。空白の配列に対して使用すると、評価は false になります。 |
order.lineitem.product.title の値が、pineapple、guava、kiwi と比較されます。「guava」は提供されたリストに含まれているため、項目の商品名が guava の場合、条件は真になります。 |
| 次のいずれとも等しくない | フィールドが、指定されたリスト内のどの値とも等しくないかどうかを確認します。 |
order.lineitem.product.title の値が、pineapple、guava、kiwi と比較されます。「raspberry」は提供されたリストに含まれていないため、項目の商品名が raspberry の場合、条件は真になります。 |
| 次を含む | 最初の入力値に、2 番目の入力値のデータが含まれているかどうかを比較して確認します。 |
order.lineitem.product.title の値が berry と比較されます。「berry」は「strawberry」に含まれているため、項目の商品名が strawberry の場合、条件は真になります。 |
| 次を含まない | 最初の入力値に、2 番目の入力値のデータが含まれていないかどうかを比較して確認します。 |
order.lineitem.product.title の値が berry と比較されます。項目の商品名が apple の場合、「berry」は「apple」に含まれていないため、条件は true になります。 |
| 次で始まる | 最初の値が2番目の値のデータで始まるかどうかを確認するために、値を比較します。 |
order.shippingAddress.country の値が United と比較されます。注文の配送先住所の国が United Kingdom の場合、「United Kingdom」は「United」で始まるため、条件は true になります。 |
| 次で始まらない | 最初の値が2番目の値のデータで始まらないかどうかを確認するために、値を比較します。 |
order.shippingAddress.country の値が United と比較されます。注文の配送先住所の国が Canada の場合、「United Kingdom」は「Canada」で始まらないため、条件は true になります。 |
| 次で終わる | 最初の値が2番目の値のデータで終わるかどうかを確認するために、値を比較します。 |
order.lineitems.product.title の値が pie と比較されます。項目の商品名が key lime pie の場合、「key lime pie」は「pie」で終わるため、条件は true になります。 |
| 次で終わらない | 最初の値が2番目の値のデータで終わらないかどうかを確認するために、値を比較します。 |
order.lineitems.product.title の値が pie と比較されます。項目の商品名が chocolate cake の場合、「chocolate cake」は「pie」で終わらないため、条件は true になります。 |
Null または空の演算子
| 演算子 | 説明 | True/False の条件 |
|---|---|---|
| 空または存在しない | フィールドが空 (値がない) であるか、存在しない (null) かをチェックします。 |
フィールドが空または null の場合は true を返し、存在する場合は false を返します。
|
| 空ではなく存在する | フィールドが存在し、空でも null でもないことをチェックします。 | フィールドが空でなく存在する場合は true を、空の場合は false を返します。 |
リスト演算子
リスト演算子をフィールドレベルの演算子と組み合わせることで、リストに含まれるデータの条件をチェックできるようになります。
「次のいずれか」の例のように、注文に特定の商品 (order.lineItems にあります) や特定のタグ (order.lineItems.product.tags の下のリスト) が含まれているかどうかをチェックできます。どちらのケースでも、この例では [次のいずれか] リスト演算子が使用されています。
Shopify Flow には、リストを操作するための [次のいずれか]、[次のいずれでもない]、[次のすべて] の 3 つの演算子が用意されています。
| 演算子 | 説明 | 使用例 |
|---|---|---|
| 次のいずれかと等しい | リスト内のいずれかのアイテムが指定された条件と一致するかどうかを確認します。 リスト内のいずれかのアイテムが一致する場合は、 true を返します。リストが空であるか、一致するアイテムがない場合は、false を返します。 | 注文項目の商品タグのいずれかが [タグ名] と等しい を使用して、注文に特定のタグを持つ商品が含まれているかどうかを確認します。 |
| 次のいずれでもない | リスト内のどのアイテムも指定された条件と一致しないことを確認します。 どのアイテムも条件と一致しない場合は、 true を返します。リストが空の場合は、true を返します。 | None of product tags is equal to presale を使用して、商品に presale タグが付いていないかどうかを確認します。よくある間違いは、is not equal to を使用して演算子を否定しようとすることです。この二重否定である None of product tags is not equal to presale を使用すると、条件が理解しにくくなり、無効になります。
|
| 次のすべて | リスト内のすべてのアイテムが指定された条件と一致することを確認します。 リスト内のすべてのアイテムが条件と一致する場合は、 true を返します。 | すべての注文項目で product.vendor が Acme と等しい を使用して、注文内のすべてのアイテムの商品の販売元が Acme であることを確認します。 |
条件の順序
複数の条件を持つワークフローを作成でき、各条件で異なるアクションを実行できます。条件の順序は重要です。条件のチェックはワークフローの先頭から始まり、各条件を順に通過していきます。条件が満たされると、チェックは停止します。
この例では、お客様がストアで使用した合計金額に基づいてロイヤリティプログラムの資格があるかどうかを、複数の条件を使用してチェックします。条件は、表示されている順にチェックされます。
- 合計金額が 1000 ドルを超え、お客様がマーケティングの受け取りに同意している場合は、
Goldタグを付けます。 - 合計金額が 1000 ドル未満で 500 ドルを超えており、お客様がマーケティングの受け取りに同意している場合は、
Silverタグを付けます。 - 合計金額が 500 ドル未満で 200 ドルを超えており、お客様がマーケティングの受け取りに同意している場合は、
Bronzeタグを付けます。

1つの条件で複数の基準を組み合わせる
条件を作成する際、複数の基準を設定できます。これらの個別の基準をどのように組み合わせ、条件全体が true か false かを決定するかを選択できます。
すべての基準が満たされている場合
[かつ] を選択すると、設定したすべての基準が true の場合にのみ、true の応答が返されます。
たとえば、カナダ在住で、1 回の注文で 500 ドル以上を使用するお客様にタグを付けるワークフローを作成します。

お客様の所在地がカナダで、なおかつ注文金額が 500 ドル超の場合にのみ、ワークフローがお客様にタグ付けします。これらの条件のいずれかを満たさない場合、お客様にはタグ付けされません。
いずれかの基準が満たされる場合
OR を選択すると、設定した基準のいずれかが true の場合に、応答が true になります。
たとえば、リスクの推奨が [キャンセル] または [要調査] の注文にタグ付けするワークフローを作成します。どちらかの条件が true であれば、その注文にタグ付けされます。

条件内の静的データと動的データ
通常、条件の 2 番目の値は、手動で入力される静的な値です (product.title == "your title" など)。この値は、ワークフローが実行されるたびに同じままです。
2 番目の値のフィールドに アイコンが表示される場合は、動的な値を使用することもできます。動的な値は、ワークフローが実行されるたびにストアデータから取得されます。動的な値を使用するには、
アイコンをクリックし、比較する値を選択します。動的な値は、すべてのフィールドで使用できるわけではありません。
たとえば、注文の請求先住所の国が配送先住所の国と一致する場合に、その注文にタグ付けするワークフローを作成します。

この例では、2 番目の値に比較対象の静的な文字列を手動で指定するのではなく、1 番目と 2 番目の両方の値がストアのデータから取得されます。お客様が指定した請求先住所と配送先住所の国が同じ場合、条件は true となり、注文にタグが付けられます。
場合によっては、正しくないタイプの動的データを使用する必要が生じることがあります。たとえば、文字列として保存されている数値を別の数値と比較する必要がある場合があります。この場合、[コードを実行] オプションを使用して、データを正しいタイプに変換できます。
テンプレート
テンプレートライブラリにあるほとんどのテンプレートには、条件が含まれています。
条件の例
リスト内の少なくとも 1 つのアイテムが条件に一致する場合
この例では、リスト内の少なくとも 1 つのアイテムが特定の値に一致するかどうかを確認する、一般的な条件を示します。
この場合、条件は、注文に含まれるいずれかの商品に presale のタグが付いているかどうかを確認します。この条件を構築するには、order / lineItems / product / tags を選択します。デフォルトでは、Flow は論理演算子として [次のいずれか] を選択します。

[次のいずれか] の部分は リスト演算子であり、複数のリストアイテム間での照合を処理するために使用されます。[次と等しい] の部分は、単一のリストアイテムが一致するかどうかを決定する フィールドレベルの演算子です。
リスト内のどのアイテムも条件に一致しない場合
この例では、リスト内のどのアイテムも特定の値に一致しないことを確認する、一般的な条件を示します。考慮すべき一般的な問題の 1 つに、リストが空になる場合があることが挙げられます。リストが空の場合、条件はリスト演算子 (この場合は [次のいずれでもない]) によって処理されます。
この場合、条件は、どの商品タグも foo と等しくないことを確認します。

条件は、(1) 商品タグがない場合、または (2) いずれのタグも foo ではない場合に true を返します。それ以外の場合は false を返します。
リスト内のアイテムが複数の基準に一致する場合
この例では、リスト内の少なくとも 1 つのアイテムが 2 つの異なる基準に一致するかどうかを確認する、一般的な条件を示します。
この場合、条件は、注文に含まれるいずれかの商品に presale のタグが付いていて、なおかつその商品の productType が clothing であるかどうかを確認します。

この条件を構築するには、次の手順を実行します。
- 最初の基準として、order / lineItems / product / tags を選択します。
- lineItems リストで、[同じアイテムの基準を追加] を選択します。注:ここで間違ったリストアイテムを選択することは、よくある間違いです。
- 最上位のオブジェクトとして lineItems_item を選択し、次に 2 番目の基準として product / productType` を選択します。注:ここで間違ったオブジェクトを選択することも、よくある間違いです。
- AND を選択して、2 つの基準を組み合わせます。
- 2 つの基準に、
presaleとclothingを入力します。