[TIPS]n8nのワークフローでエラーの発生を検知する方法!クリティカルな業務に必須!

s
satou
update 2022/6/13

今回は自動実行のフローでエラーが発生した時に使えるワークフローを紹介したいと思います。

ワークフローのエラーとは?

自動実行のワークフローを運用していると上手く動いていたはずのフローが、エラーが発生して途中までしか実行されないことがあります。
よく起こるエラー

  • 取得したデータが想定外のデータだったため
  • 結果が0件でその場合を想定出来ていなかった
  • ネットワークが途中で切れた
  • n8n自体の不具合
  • フローで使用している外部サービスの不具合

    正常に動いていたものがいつも間にか動かなくなっていると業務に影響が出てしまいます。

    エラー対策で最も重要な対策の1つが、すぐに気付けるようにすることです。
    今回紹介するエラーワークフローでその対策が行えます。


エラーワークフローとは?

エラーワークフローとは、エラーが発生した時に実行されるワークフローのことです。

エラーが発生した時に通知などを行いたい場合はワークフローにエラーワークフローを設定することでエラーワークフローが自動実行されます。

設定あり・なしの実行の流れは下記のようになります。
エラーワークフロー未設定の場合
「ワークフローA実行エラー」 → 終了
エラーワークフロー設定した場合
「ワークフローB実行エラー」 → 「エラーワークフローA実行」 → 終了


フローの概要

今回はエラーが発生した時にメール通知させるエラーワークフローを作ってみます。

大きくやることは下記の3つ。

  1. エラー発生時にだけ開始するノードを設定する
  2. エラーの内容をメール通知するノードを設定する
  3. ワークフローにエラーワークフローを設定する


完成したフロー


ワークフロー作成

n8nデスクトップアプリを立ち上げて作業を進めていって下さい。

Step1. 新規ワークフロー作成画面を開く

左側のメニューの「WorkFlow」->「New」をクリック。
ワークフロー名変更
エラーワークフローということが分かりやすいようにワークフロー名を「エラー用フロー01」と変更しておきます。


Step2. Error Triggerノードを追加する

まずはエラーが発生した時動く開始ノードとなるトリガーノードを設定します。

ノード追加ボタンからError Triggerノードを追加。
※Startノードは使用しないのでDisabledにしておきます。

パラメータの設定は何もないのでこれでError Triggerノードの設定は終了です。

Triggerノード
トリガーノードは何かきっかけ(イベント)が発生した時に動くノードです。
ノード単体で動かすボタンの名前が「Listen For Event」となっているのはそのためで、イベントを確認して実行しようとするボタンになっています。

※作成画面の動きとしては「Excute node」と同様なのでError Triggerノードを使う上ではあまり意識する必要はありません。


Step3. 取得出来るエラー項目を確認する

Error Triggerノードはエラーの内容が取得出来ます。
「Listen For Event」を実行するとどんな項目が取得出来るか確認出来るので表示してみます。
どんな項目が取得出来るか確認出来ました。
ここで確認した項目を通知内容に表示するようにしていきます。


Step4. Send Emailノードを追加する

メールで通知するために今回はSend Emailノードを使ってメール送信します。

ノード追加ボタンからSend Emailノードを追加。


Step5. Send Emailパラメータに通知内容を設定する

メール送信の設定とエラー内容をメール本文に表示するように設定していきます。

本文以外のパラメータ設定する
クレデンシャル、From・To(必要な場合CC・BCCも)の先、Subject を設定します。
※パラメータの設定方法が分からない方は以前に私が書いた初めてn8nに触れる人向け!簡単ワークフロー「メールを送信してみよう」の記事で詳しく説明しているので参考にしてみてください。

エラー内容の設定方法
Error Triggerノードから受け取ったエラーの説明と設定方法です。

項目 書き方
説明
                               
execution.id {{$node["Error Trigger"].json["execution"]["id"]}} 実行id
execution.url {{$node["Error Trigger"].json["execution"]["url"]}} 実行url
execution.retryOf {{$node["Error Trigger"].json["execution"]["retryOf"]}} 再試行回数
※データベースに保存した時だけ値が設定されます
execution.error.message {{$node["Error Trigger"].json["execution"]["error"]["message"]}} エラーの内容
execution.error.stack {{$node["Error Trigger"].json["execution"]["error"]["stack"]}} スタックトレース(プログラムの実行過程)
execution.lastNodeExecuted {{$node["Error Trigger"].json["execution"]["lastNodeExecuted"]}} 最後に実行されたノード名
execution.mode {{$node["Error Trigger"].json["execution"]["mode"]}} 実行モード
workflow.id {{$node["Error Trigger"].json["workflow"]["id"]}} エラーが発生したワークフローのid
workflow.name {{$node["Error Trigger"].json["workflow"]["name"]}} エラーが発生したワークフローの名前


本文の設定をする
本文にはエラーの内容も設定したいのでAdd ExpressionでExpressionに設定していきます。
Error Triggerノードから受け取った全ての項目を設定してみます。
Error Triggerノードから受け取った全ての項目を設定しているので、必要な項目を使って設定してみてください。


Step6. エラーワークフローを設定する

エラーワークフローを設定したい自動実行ワークフローの作成画面を開いて、SettingsからError Workflowを設定します。

自動実行のワークフローにしか使えない
エラーワークフローは手動実行(Execute Workflow)では動かないので、自動実行のワークフローのError Workflowとして設定してください。


Step7. エラー通知で受信内容を確認する

メールが受信出来ていることと、エラー内容が表示されていることを確認します。

今回はItem Listsノードで、受け取っていない「name」という項目を使う設定をして意図的にエラーを発生させエラーワークフローを実行させました。

エラーメールが送信されない場合
メニューのExecutionsから実行履歴が見れます。
実行結果を見るとどこが原因か推測しやすくなるのでExecutionsから実行履歴が見れることを覚えておきましょう。

エラーフローが正常に動いた場合は2件実行されます。
対象の自動実行フロー実行結果:Error、
エラーワークフロー実行結果:Success


これで、エラーが発生した時にメール通知させるエラーワークフローは完成です。


エラーワークフローのダウンロード

完成したワークフローは下記よりダウンロード出来ます。
n8n_ErrorWorkflow01.json

ダウンロードしたファイルはメニューのWorkflow→Import from Fileからインポートすれば完成したワークフローが使えます。

※ダウンロードファイルを使う場合に必要な設定

  1. Send Emailノードの「Credential for SMTP」「From Email」「To Email」の設定がされていないのでご自身の設定をする
  2. 「Step6. エラーワークフローを設定する」の作業をする


上手くいかない人や早く進めたい人などはファイルをダウンロードして試してみてください。


最後に

エラーワークフローを上手く使って自動実行ワークフローを使いこなしましょう!

あなたのデジタル化も
掲載しませんか?

Google Formで入力する