メインコンテンツまでスキップ

エラー処理

ワークフローのロジックを設計する際のベストプラクティスは、発生し得るエラーを十分に考慮し、洗練された方法でエラーを処理することです。エラー処理ワークフローを設定することで、n8n がワークフローの実行に失敗した際にどのように応答するかを制御できます。

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

失敗した実行を調査するには、以下の方法があります:

  • 実行履歴を確認します。特定のワークフローの履歴、またはアクセス権のあるすべてのワークフローの履歴を参照できます。また、直近の実行データを現在のワークフローに読み込むことも可能です。
  • ログストリーミングを有効化します。

エラー処理ワークフローの作成と設定

各ワークフローに対して ワークフロー設定 内でエラー処理ワークフローを設定できます。このエラー処理ワークフローは、対象のワークフローの実行が失敗した際に自動的に実行されます。これにより、ワークフローでエラーが発生した際にメールや Slack 通知などを送信できます。エラー処理ワークフローは、必ず Error Trigger ノードから開始する必要があります。

複数のワークフローで同じエラー処理ワークフローを共有することも可能です。

  1. 新しいワークフローを作成し、最初のノードとして Error Trigger ノードを配置します。
  2. ワークフローに名前を付けます(例:Error Handler)。
  3. 保存 をクリックします。
  4. このエラー処理ワークフローを使用したい対象のワークフローで以下の手順を実行します:
    1. オプション オプションメニューのアイコン > 設定 をクリックします。
    2. エラー処理ワークフロー の項目で、先ほど作成したワークフロー(例:Error handler)を選択します。
    3. 保存 をクリックします。これにより、このワークフローでエラーが発生した際に、関連付けられたエラー処理ワークフローが自動的に実行されるようになります。

エラー時のデータ構造

Error Trigger が受け取るデフォルトのエラーデータは以下の通りです:

[
{
"execution": {
"id": "...",
"url": "...",
"retryOf": null,
"error": {
"name": "NodeOperationError",
"message": "",
"cause": {},
"node": {}
},
"lastNodeExecuted": "Node With Error",
"mode": "manual"
},
"workflow": {}
}
]

以下のフィールドは、状況によっては含まれない場合があります:

  • execution.id:実行内容がデータベースに保存されている必要があります。エラーがメインワークフローのトリガーノード自体で発生した場合、ワークフローの実行自体が開始されないため、このフィールドは含まれません。
  • execution.url:実行内容がデータベースに保存されている必要があります。エラーがメインワークフローのトリガーノード自体で発生した場合、このフィールドは含まれません。
  • execution.retryOf:現在の実行が失敗した実行の再試行である場合にのみ含まれます。

エラーがメインワークフローのトリガーノード自体(ワークフローの後段ではなく)で発生した場合、エラー処理ワークフローに送信されるデータ構造は異なり、execution フィールドに含まれる情報が少なくなり、代わりに trigger フィールドにより多くの情報が含まれます:

{
"trigger": {
"error": {
"name": "WorkflowActivationError",
"cause": {},
"timestamp": 1654609328787,
"message": "",
"node": {}
},
"mode": "trigger"
},
"workflow": {}
}

Stop And Error ノードを使用して強制的にワークフローを失敗させる

エラー処理ワークフローを作成・設定すると、ノードの設定ミスやワークフローのメモリ不足などの理由で実行が失敗した際に、n8n は自動的にそのエラー処理ワークフローを実行します。

また、ワークフロー内に Stop And Error ノードを追加することで、任意の条件に基づいて強制的に実行を失敗させ、エラー処理ワークフローをトリガーすることもできます。