Shopify Flow のエラーのトラブルシューティング

このドキュメントでは、一般的なエラーと制限、発生理由、それらを解決する方法について説明します。Flowで発生する可能性があるエラーには、永続的なエラーと一時的なエラーの2種類あります。

ワークフロー編集時のエラー

ワークフローの編集時は、エラーが発生して、ワークフローを保存できない場合があります。以下は、ワークフローの編集時に発生する可能性がある一般的なエラーです。

データが見つかりません

ワークフローに新しいアクションを追加する際に、Data not foundエラーが発生する場合があります。

データが見つかりませんエラー

このエラーは、商品タグの追加を含む多くのアクションで、商品などのShopifyリソースが必要になるために発生します。そのリソースが利用できない場合は、アクションを実行できません。一般的に、ワークフローには、必要なデータに類似しているものの、実際に必要なものを提供しないデータが含まれることがあります。

次のセクションでは、このエラーの原因となる一般的なシナリオとその解決方法について説明します。

問題1:単一のアイテムが必要なときに、データ取得によってリストが提供された

多くの場合、ワークフローはShopifyリソースのリストを提供しますが、アクションでは単一のリソースのみが許可されます。たとえば、ワークフローは商品データの取得を通じて商品のリストを提供しますが、商品タグの追加アクションには単一の製品が必要です。

このエラーを解決するには、アクションを追加してリストをループし、リスト内の各アイテムに対してアクションを呼び出します。この例では、エラーとアクションを使用した解決策の両方を示します。

データが見つかりませんエラー

問題2:単一のアイテムが必要なときにトリガーによってリストが提供された

アクションに単一のリソースが必要であるにもかかわらず、トリガーがリストを提供する場合にも、同様のエラーが発生する可能性があります。たとえば、[フルフィルメント注文を履行済みとしてマークする]には、フルフィルメント注文が必要ですが、トリガーは、フルフィルメント注文のリストを提供する注文から発生します。

このエラーを解決するには、問題1のように、アクションを追加してリストをループし、リスト内のアイテムごとにアクションを呼び出します。

フルフィルメント注文のソリューション

あるいは、必要なリソースを提供する別のトリガーを使用することもできます。たとえば、[注文を作成する] トリガーを使用する代わりに、単一のフルフィルメント注文を提供するフルフィルメント注文の履行準備完了トリガーを使用できます。

フルメントオーダーをフルフィルメントするトリガーの準備完了の例

問題3:[予定時刻] トリガーによってデータが提供されなかった

[予定時刻]トリガーはShopifyリソースデータを提供しません。トリガー後にShopifyリソースを必要とするアクションを接続しようとすると、エラーが発生します。

このエラーを解決するには、必要なデータを提供する [製品データの取得] などのアクションを追加します。問題1で述べたように、データを取得するアクションが返すリストをループするために、アクションを追加する必要があります。

必要な商品例がありません

問題4:アプリトリガーによってデータが提供されなかった

問題3と同様に、アプリによって作成された一部のトリガーは、必要なShopifyリソースデータを提供しません。たとえば、[レビュー作成] トリガーはメールアドレスを提供しますが、[お客様タグの追加] などの多くのアクションに必要なお客様オブジェクトは提供しません。

このエラーを解決するには、「データの取得」アクションを使用して、必要なShopifyリソースを取得することができます。たとえば、[お客様データの取得] を使用して、トリガーによって提供されたメールアドレスからお客様オブジェクトを取得できます。他の問題と同様に、データを取得するアクションによって返されるリストをループするアクションも追加する必要があります。

「データの取得」オプションがない場合は、アプリ開発者に連絡して、必要なデータを提供するようにトリガーを変更できるかどうかを問い合わせる必要があります。

ワークフロー実行時のエラー

ワークフローの実行時にエラーが発生すると、そのワークフロー実行は失敗としてマークされ、ワークフロー実行の詳細にエラーメッセージが表示されます。以下は、ワークフローの実行に失敗した場合に発生する可能性がある一般的なエラーです。

一時的なエラー

一時的なエラーは、Flowがタスクを完了できない場合に発生する一時的なエラーです。これらのエラーが発生した場合、成功するか、タイムアウト制限に達するまで再試行が行われます。たとえば、コネクターアクションを実行する際にFlowからパートナーに連絡できない場合、Flowでは、あきらめる前にこのタスクを何度も再試行します。

再試行の間隔は長くなり、次に再試行するまでの遅延時間は、前回の遅延時間よりも長くなります。通常、ワークフローで一時的なエラーが発生した場合、タスクは再試行されるため、実行中の状態が長く続きます。

タスクの再試行が成功すると、ワークフローは続行されます。タスクの再試行で永続的なエラーが発生すると、ワークフローは失敗します。すべてのワークフローセクションには、合算した実行時間の上限が決められており、その上限は36時間です。制限に達する前に一時的なエラーのあるステップが成功しなかった場合、ワークフローは失敗します。

待機ステップを含むワークフローはセクションに分かれており、これは、ワークフローでのタイムアウト制限の計算方法に影響します。各セクションは、一緒に実行されるタスクのグループで、それぞれに36時間の上限が設けられています。たとえば、ワークフローに1時間待つ待機ステップがある場合、待機ステップの前のタスクは、1つのセクションで一緒に実行され、待機ステップの後のタスクは、別のセクションで一緒に実行されます。ワークフローに複数の待機ステップがある場合、各待機ステップ間のタスクは、1つのセクションで一緒に実行されます。待機ステップのないワークフローは、1つのセクションと見なされます。

一時的なエラーが発生することはよくあります。ただし、ワークフローの複数の実行で同じ一時的なエラーが決まって発生する場合、ワークフローを再設定する必要があります。

ステップがタイムアウトした

Step timed out エラーは通常、ワークフロー内のタスクが1つのセクションで照会しようとしているデータ量が多すぎる場合に発生します。このエラーは、大きすぎて適切なタイミングで取得できないリスト (特にネストされたリスト) に対して処理を繰り返すワークフローでよく発生します。

ワークフローでこのエラーが発生すると、トリガーまたは待機ステップがretryingとして表示されます。

このエラーを解決するには、リストおよびネストされたリストにアクセスする条件を確認して、それらが正しいことをお確かめください。一般的な問題としては、条件によって、注文に含まれる商品だけではなく、ショップのすべての商品がチェックされることです。

5xxステータス

ほとんどのFlowアクションでは、HTTPコールが実行されます。ネットワークやサーバーの他の問題が発生すると、HTTPコールが失敗し、500から599のエラーコードが返される場合があります。このエラーが1回だけの場合は問題ありませんが、繰り返し発生する場合は、ステップの設定方法ではなく、タスクを処理するサーバーの問題を示している可能性があります。

このタイプのエラーは、[HTTPリクエストを送信する] アクションでよく表示されますが、ほとんどのタスクで起こる可能性があります。

GraphQLがスロットリングされた

ワークフローによって実行される作業の合計量は、APIレート制限によって制限されます。このAPIレート制限は、ご利用のプランによってある程度決まります。ワークフローが非常に複雑であるか、意図しない設計エラーがある場合を除き、通常はこの制限に到達しません。以下に、このエラーにつながる可能性があるシナリオの例を示します。

  • HTMLを含むメタフィールド値をチェックするなど、ワークフローのLiquidまたは条件で大量のデータを含むリストをループ処理する場合。
  • 大きなショップでshop.ordersをループ処理するなど、ワークフローのLiquidまたは条件で大きなリストをループ処理する場合。
  • ワークフローが無限ループになり、ワークフローが新しいワークフロー実行を作成し続ける場合。たとえば、ワークフローで [お客様タグが追加されました] トリガーを使用していて、[顧客タグを追加する] アクションが含まれている場合、これが発生する可能性があります。

制限に達すると、GraphQL throttledエラーを受け取ります。このエラーは、実行しようとしている他のワークフローに影響する可能性があるため、このエラーが発生した場合は、速やかに解決する必要があります。

永続的なエラー

永続的なエラーは、Flowがタスクを完了できず、タスクを再試行できない場合に発生するエラーです。たとえば、メールアドレスが無効であることが原因でFlowからメールを送信できない場合、タスクを再試行できません。代わりに、ワークフローは失敗します。

フィールド:IDが必須であるものの空のフィールド

ほとんどのShopifyアクションでは、実行するうえで1つ以上のリソース (商品、お客様、注文など) が必要です。リソースが利用できないことがあり、その場合はアクションが意図した通り実行されません。たとえば、お客様が未追加の注文を管理画面で作成することはできます。[お客様タグを追加] などのアクションを実行しようとすると、このエラーが発生してそのアクションは失敗します。

エラーを発生しないようにするには、アクションの前に条件を追加して、リソースが存在するかどうかを確認します。前の例では、[お客様タグを追加する] と同じワークフローで内部メールを送信する場合、失敗する可能性があるステップの前に前述のアクションを追加するか、次のいずれかの操作を実行します。

平行する分岐線 (1個のステップから2つ以上の分岐線が出ている) にアクションを追加する

2つのアクションを平行に表示する例

アクションの前に条件を追加して、お客様が存在するかを確認します。たとえば、order / customer / id is not empty and existsを確認できます

IDを探している状態を表示する例

Flowには、Googleスプレッドシートのアカウントへの権限がありません。アカウントを再連携してください。

Googleスプレッドシートコネクターを使用する場合、GoogleアカウントをFlowにリンクして、スプレッドシートに書き込む権限を付与する必要があります。このエラーは、アカウントがFlowからリンク解除されるか、アカウントがスプレッドシートにアクセスできないことが原因で、Flowにはスプレッドシートへの書き込み権限がない場合に発生する可能性があります。

このエラーを解決するには、コネクターに使用されているアカウントで、シートを開いてアクセス権を編集できることを確認してください。間違ったアカウントがリンクされている場合は、そのアカウントの連携を解除して新しいアカウントと連携することができます。

ステップ:
  1. 新しいワークフローを開くか、作成します。
  2. アクションを追加します。
  3. Googleスプレッドシートコネクターを選択します。
  4. [連携解除] をクリックしてから、[連携] をクリックします。

無効なプロパティがあるFlowアクションを受け取りました。お客様はマーケティングを受け入れていません。

[マーケティングメールを送信する] アクションでは、受信することに同意していないお客様にはメールを送信しないため、ワークフローが送信しようとしても永続的に失敗します。

このエラーを解決するには、ワークフローに、お客様のサブスクリプションのステータスをチェックする条件を追加します。そうすることで、メールを送信する前に、お客様がマーケティングメールの受信に同意したことを確認できます。「メール購読者リスト管理」に記載された手順に従ってください。

[リソースタイプ] のリソースがない

このエラーは、customerorderなどのリソースのデータをワークフローで取得できるようになる前に、そのリソースが削除されたことを示しています。このエラーは、ほとんどの場合、待機ステップの後に発生しますが、トリガーイベントが発生した直後にリソースが削除された場合は、トリガーでも発生する可能性があります。

エラー発生時に通知を受け取る

エラーが発生した際にストア運営に影響が生じる場合は、エラー発生時に通知が送信されるように設定できます。エラー通知は、[ワークフローエラーが発生したとき] トリガーを使用して、他のワークフローと同じように構築できます。無駄な通知を制限するために、エラー通知は、ワークフローのバージョンごとに1件のみ送信されます。

通知を設定する際は、以下のいずれかのテンプレートを使用できます。

実行を再試行する

ワークフローの実行中にエラーが発生したり、想定どおりにワークフローが実行されなかったりする場合があります。関連するワークフローの問題をトラブルシューティングして修正したら、過去の実行を手動で再試行して、過去の実行の結果を遡って修正することができるようになります。ワークフローの実行の再試行について、詳しくはこちらをご覧ください。

実行中 (速度制限あり)

1つまたは複数のワークフローで使用するリソースが多すぎる場合があります。これにより問題が発生するのを防ぐため、Flowによってストアでの実行が意図的に制限され、遅延やタイムアウトエラーが発生する可能性があります。これは非効率的なワークフローを書き直すことで修正可能で、通常、意図した通りに機能しないバグを修正します。

実行時間が長すぎる

このメッセージは、ワークフローの実行に非常に時間がかかっていることを意味します。通常この問題は、ワークフロー内で大量のデータを使用していて、Flowが取得するのに多くの時間がかかるすることで発生します。

このようなケースは、一般的に、アイテムの複数のリストを経由する深いリクエストパス (たとえば、ある商品が所属するすべてのコレクションのすべての商品に対するすべてのメタフィールドをリクエストするなど) によって発生します:

long running workflow example
これは多くの場合、ワークフローのトリガーステップがタイムアウトすることにも関連します。

すべてのメタフィールドをループするワークフローは、特定のメタフィールドのみを使用することで改善できる場合があります。複数のネストされたリスト (商品に対するすべてのコレクションのすべての商品など) または特に大きなリスト (すべてのオブジェクトに対するすべてのメタフィールドを含む、メタフィールドの定義など) へのアクセスが、意図せず実行される場合があります。この場合、正しいフィールド (単一の商品または単一のオブジェクトの単一のメタフィールド) を選択することで、効率が大幅に向上します。他のケースでは、クエリフィルターで「商品/注文/顧客データの取得」アクションを使用すると、使用されるオブジェクトの数を大幅に減らしながら、関連するオブジェクトにアクセスできます。

処理データが多すぎる

このメッセージは、ワークフローに対する実行で大量のデータが生成されていることを意味します。これは一般的に、多くのフィールドをチェックする複雑な条件を持つことで発生し、通常、リストの複数のレイヤーのフィールドをチェックすることで発生します。

たとえば、「このお客様の少なくとも1つのタグ、少なくとも1つの注文項目、この項目の少なくとも1つのタグ」などの条件により、多くのチェックが実行され、これらのチェックの結果を表示するために多くのデータが生成される可能性があります。

too much data workflow example

自動再試行が失敗する

このメッセージは、一時的な問題が原因でワークフローの実行に繰り返し失敗しており、その後も正常に再試行できている頻度が低いことを意味します。多くの場合、ShopifyのAdmin APIまたはパートナーのアプリで大量のリクエストが発生していることが原因です。

お探しの情報が見つかりませんか?いつでもお気軽にお問い合わせください。