エラー処理
ワークフローのロジックを設計する際のベストプラクティスは、発生し得るエラーを十分に考慮し、洗練された方法でエラーを処理することです。エラー処理ワークフローを設定することで、n8n がワークフローの実行に失敗した際にどのように応答するかを制御できます。
エラーのトラブルシューティング
失敗した実行を調査するには、以下の方法があります:
- 実行履歴を確認します。特定のワークフローの履歴、またはアクセス権のあるすべてのワークフローの履歴を参照できます。また、直近の実行データを現在のワークフローに読み込むことも可能です。
- ログストリーミングを有効化します。
エラー処理ワークフローの作成と設定
各ワークフローに対して ワークフロー設定 内でエラー処理ワークフローを設定できます。このエラー処理ワークフローは、対象のワークフローの実行が失敗した際に自動的に実行されます。これにより、ワークフローでエラーが発生した際にメールや Slack 通知などを送信できます。エラー処理ワークフローは、必ず Error Trigger ノードから開始する必要があります。
複数のワークフローで同じエラー処理ワークフローを共有することも可能です。
- 新しいワークフローを作成し、最初のノードとして Error Trigger ノードを配置します。
- ワークフローに名前を付けます(例:
Error Handler)。 - 保存 をクリックします。
- このエラー処理ワークフローを使用したい対象のワークフローで以下の手順を実行します:
- オプション
> 設定 をクリックします。 - エラー処理ワークフロー の項目で、先ほど作成したワークフロー(例:Error handler)を選択します。
- 保存 をクリックします。これにより、このワークフローでエラーが発生した際に、関連付けられたエラー処理ワークフローが自動的に実行されるようになります。
- オプション
エラー時のデータ構造
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 ノードを追加することで、任意の条件に基づいて強制的に実行を失敗させ、エラー処理ワークフローをトリガーすることもできます。