Shopify Flow の条件について

条件とは、一連の基準が満たされているかどうかに基づいて、次に進む方法を決定するワークフローのステップです。各条件ステップには、基準が満たされた場合の [真] と、満たされなかった場合の [偽] の2つの可能性があります。どちらの可能性についても、別の条件やアクションを選択して次のステップを定義しない場合、ワークフローの実行は停止します。

たとえば、注文が作成されたときにワークフローがトリガーされる場合、条件によって、特定のディスカウントコード AFFILIATE10 がその注文で使用されたかどうかを確認できます。使用されていた場合、[真] オプションから、アフィリエイトにコードが使用されたことを知らせるメールを送信するアクションにつなげることができます。使用されていなかった場合、[偽] オプションは空のままとなり、それ以上何も起こらずにワークフローの実行が終了します。

ワークフローには、その複雑さに応じて、いくつでも条件を設定できます。また、ワークフローで何を実行したいかに応じて、条件を他の条件やアクションに接続することもできます。条件は、順番に接続するように設定できます (たとえば、条件Aが真の場合は条件Bをチェックし、Aが偽の場合はCをチェックするなど)。あるいは、同じステップの一部として同時に発生するように設定することもできます (たとえば、A、B、Cのいずれかが真であるかチェックするなど)。

ワークフローの条件を作成する

Shopify Flowで利用可能なオプションのプリセットリストから選択できるトリガーやアクションとは異なり、条件は、変数、論理演算子、値を選択して条件文を作成することで、ゼロから作成されます。

  • 変数とは、条件が使用するデータを定義するプレースホルダーです。たとえば、条件で注文の特定のディスカウントコードを確認する場合、変数は order.discountCode になります。変数では、GraphQL Admin API のドット表記が使用されます。
  • 論理演算子 は、条件が満たされているかどうかをワークフローが判断する方法を示します。論理演算子は、変数レベルで適用することも、複数の変数が条件全体の基準の一部として含まれている場合に適用することもできます。
    • 変数レベルのオプションには、[より大きい][次で始まる] などのフィールドレベルの演算子、または [いずれか][すべて] などのリスト演算子が含まれます。
    • 条件レベルのオプションには、すべての変数が真の場合に条件全体が真と見なされることを意味する AND と、少なくとも1つの変数が真の場合に条件全体が真と見なされることを意味する OR があります。
  • とは、変数が探している実際の情報です。たとえば、ワークフローで確認したい特定の order.discountCodeAFFILIATE10 の場合、それが条件の一部として含める値になります。

変数と演算子を選択すると、Shopify Flowキャンバスの条件ステップが更新され、条件文がわかりやすい言葉で表示されるため、作成中の条件が正しくフォーマットされているかを再確認できます。[説明を追加] をクリックして、デフォルトの条件文を独自の説明で上書きすることもできます。

Shopify Flowの条件の要素について、詳しくはこちらをご覧ください。

条件における変数の理解

ワークフローで条件ステップを作成する際、最初に [変数を追加] するよう求められます。では、変数とは何でしょうか?

Shopify Flowでは、変数とは、ワークフローの条件によって使用されるデータを示すプレースホルダーです。条件が「Aが10より大きい場合...」となっている場合、A の部分が変数です。条件の変数を選択することは、評価するデータを具体的に条件に指示することと同じです。

変数は、GraphQL Admin API のドット表記を使用してフォーマットされます。Flowアプリでワークフローを作成するためにAPIに精通している必要はありませんが、変数名とその定義を基本的に理解しておくと、目的のワークフローロジックを構築するのに役立ちます。

変数がどのようなデータを表すかを理解するために、変数に関する以下の情報を参考にしてください。

ヒント:Dev Docs Assistantで変数に関するサポートを受ける

条件を作成する際にどの変数を選択すればよいかわからない場合は、Shopify Dev Docs Assistantにアドバイスを求めてみてください。Dev Docs Assistantは、GraphQL Admin APIに関するすべてのドキュメントにアクセスでき、Shopify Flowで条件をフォーマットする方法についての提案を提供できます。

  1. Shopify Dev Docs に移動します。
  2. [アシスタントに質問する] をクリックして、チャットパネルを開きます。
  3. メッセージフィールドに、「トリガーが「注文の作成」で始まる場合に、Shopify Flow でお客様のタグデータにアクセスするにはどの変数を使用すればよいですか?」などのリクエストを入力します。
  4. Enter キーを押すか、送信 をクリックします。

変数のドット表記の読み方

変数を選択すると、order.customer.tag のように、キーワードがピリオドで区切られた形式になっていることがわかります。この形式は、使用したいデータを取得するために API が実行するステップを示しています。変数の各「ステップ」はピリオドで区切られており、データへのパスは左から右に読み取られます。変数の長さは、データが API のどこに保存されているか、また、ワークフローがそこに到達するためにたどるパスによって異なります。

例:

  • order.email: 注文のお客様に関連付けられたメールアドレスをチェックします。これは、注文をクリックしてから注文詳細でメールアドレスをチェックするのと似ています。
  • refunds_item.staffMember.name: 注文のアイテムの返金を確認し、その返金に関連付けられたスタッフメンバーの情報に移動して、そのスタッフメンバーのフルネームを確認します。

変数を選択する際には、目的の情報を見つけるために管理画面をどのように操作するかを考えてみてください。API も同様のパスをたどる必要がある可能性が高いため、変数のフォーマットを決定する際の参考になります。

たとえば、新しい注文を確認していて、その注文に関連付けられているお客様がどの RFM グループに属しているかを知りたい場合、まず管理画面で注文のお客様名をクリックしてお客様の詳細ページに移動し、次にお客様の分析サマリーをチェックして RFM グループ列に表示されている値を確認すると考えられます。

Shopify Flow で同じデータを返すために使用する変数も、order.customer.statistics.rfmGroup のように、同様のパスをたどります。

変数のデータ要件

変数にはデータが必要です。変数で適切なデータを利用できない場合、条件は機能せず、ワークフローは失敗します。ワークフローの開始点として選択したトリガーに基づいて、条件に追加する変数のオプションは、利用可能なデータに応じて変化します。

たとえば、ワークフローが商品が作成されたときのトリガーで始まる場合、そのトリガーから作成する条件は、商品データセットで利用可能な変数に限定されます。したがって、product.category.nameproduct.vendorvariants_item.displayName などの変数はすべて、条件の一部として使用できます。対照的に、customer.verifiedEmailsubscriptionContracts_item.status などの変数は、商品データセットに関連付けられていないため、オプションとして表示されません。

しかし、これは必ずしも、他のデータセットに含まれるデータにまったくアクセスできないという意味ではありません。管理画面で別のリンクをクリックして同じページに到達できるように、一部のデータは API の複数のパスからアクセスできます。実際には、これは、同じ情報を返すために、トリガーごとに異なる変数表記が必要になることを意味します。

たとえば、ワークフローでお客様のプロフィールのタグをチェックしたいとします。ワークフローが注文が作成されたときのトリガーで始まる場合、変数は order.customer.tags になります。これは、ワークフローが注文データから始まり、次に注文内のお客様情報をチェックし、そのお客様のタグをチェックするためです。ワークフローがお客様が作成されたときのトリガーで始まる場合は、変数は単に customer.tags になります。これは、ワークフローがお客様データから始まるため、直接お客様のプロフィールのタグをチェックできるためです。

Shopify Flow ではドット表記が使用されているため、キーワードで条件に使用する変数を検索すると、複数の結果が返されることがあります。条件を構築する際にどの変数を選択するかを決めるには、変数のパスが何を示しているかを理解することが重要です。

たとえば、ワークフローで注文が作成されたときのトリガーを使用し、キーワード tags で変数を検索するとします。検索すると、注文内のさまざまな情報をチェックする、次のような結果が返される可能性があります。

  • order.tags: 注文自体に適用されるタグです。たとえば、#rush order#gift です。
  • order.customer.tags: 注文を行ったお客様に適用されるタグです。たとえば、#VIP#affiliate です。
  • order.lineItems.product.tags: 注文で購入された商品に適用されるタグです。たとえば、#fragile#requiresID です。

条件が期待どおりに機能するためには、ワークフローでチェックしたいタグの種類に応じて、正しい変数を選択する必要があります。

条件における論理演算子

論理演算子は条件がどのように適用されるかを定義し、その結果、ステートメントは true (真) または false (偽) のいずれかになります。条件が「Aが10より大きい場合...」となっている場合、[~より大きい] の部分が論理演算子です。条件の論理演算子を選択することは、実質的に、変数をどのように評価するかを条件に指示することになります。

Shopify Flow のワークフローには、3種類の論理演算子があります。

  • [~より大きい][~で始まる] などのフィールドレベルの演算子。
  • [少なくとも1つが][すべてが] などのリスト演算子。
  • ANDOR などの、条件レベルの演算子。

フィールドレベルの演算子とリスト演算子は変数レベルで適用され、条件レベルの演算子は条件全体に適用されて、複数の変数を1つの条件にまとめるために使用できます。

フィールドレベルの演算子は最も一般的な種類の演算子で、あらゆる種類の変数ステートメントで使用されます。フィールドレベルの演算子を使用すると、「Aが10より大きい場合はXを実行する」や「Bに「VIP」が含まれている場合はXを実行する」などの条件ステートメントを作成して、どの変数値がtrueの結果を返すかをより細かく管理できます。[~と等しい] がデフォルトの論理演算子です。

リスト演算子は、結果のリストを返すことができる変数にのみ適用できます。たとえば、lineItems_item.variant.price 変数は、注文内の商品バリエーションの価格を返します。お客様が同じ注文で複数の商品を購入した場合、結果のリストが返されることがあります。これは、注文内に10ドルを超える商品バリエーションが少なくとも1つある場合に、「lineItems_item.variant.price が10ドルより大きい」などの条件ステートメントを true にしたいときに、[少なくとも1つが] などのリスト演算子を適用できることを意味します。対照的に、一度に1つの結果しか返せない変数については、リスト演算子は表示されません。たとえば、order.createdAt などの変数の場合、注文は一度しか作成できないため、設定できる値は1つしかありません。そのため、その変数を含むステートメントを変更するオプションとして、リスト演算子は表示されません。

ANDOR などの条件レベルの演算子を使用すると、同じ条件に複数の変数を含めることができます。たとえば、「A が 5 と等しい場合、X を実行する」といった単純な条件文の代わりに、「A が 5 と等しく、かつ B が 10 より大きい場合、X を実行する」のような、より複雑な条件を構築できます。この場合、変数 A と B の両方が true である必要があります。また、「A が 5 と等しいか、B が 10 より大きいか、または C が 1 未満の場合、X を実行する」という条件も構築でき、この場合は A、B、C のうち 1 つが true であれば条件が満たされます。ワークフロー内のすべてが true である必要がある場合は AND を使用し、いずれか 1 つの基準が満たされれば条件が true になる場合は OR を使用します。

これが重要な理由: 条件における論理演算子の仕組みを理解すると、希望どおりの基準を正確にチェックするワークフローを構築できます。3種類の論理演算子を使用することで、詳細で複雑な条件文を作成し、非常に具体的な条件をチェックするワークフローの作成が可能になります。

条件における論理演算子に関する詳細情報をご覧ください。