中級向け
1件失敗しても止まらない取得ワークフロー(n8n テンプレート配布)
複数のAPIを順に叩いて、1件失敗しても残りを取りこぼさない型です。インポートできるJSONを置いています。認証不要の気象庁APIを使うので、入れてすぐ動きます。再試行を入れていない理由も実測つきで書きました。
公開
動作確認: — n8n 2.36.8
複数の対象を順番にAPIで取りに行く、という処理はよく書きます。 このとき既定のままだと、1件失敗しただけで全部止まり、成功していた分の結果も消えます。 前の記事で実際にそうなることを確かめました。
その対策を組み込んだ形を、そのままインポートできるJSONにしました。
jma-forecast-resilient.json をダウンロード
認証情報を1つも使いません。気象庁の公開APIを叩くだけなので、インポートして そのまま実行できます。 動作は n8n 2.36.8 で確認しています。
入れ方
- JSONをダウンロードする
- n8n の右上の
...から Import from File… を選ぶ - Execute workflow を押す

読み込んだ時点で Success と Error の2本の線が出ていれば、正しく入っています。
何をしているか
ノードは5つです。
| ノード | 役割 |
|---|---|
| 毎朝7時 | Schedule Trigger。毎日 7:00 に起動 |
| 取得する地域 | Code。取りに行く対象を並べる |
| 予報を取得 | HTTP Request。エラー出力を有効にしてある |
| 今日の天気だけ取り出す | Code。成功した分を整形 |
| 失敗を1行にまとめる | Code。失敗した分を記録用に整形 |
対象は「取得する地域」を書き換えるだけで変えられます。
return [
{ json: { label: '東京', areaCode: '130000' } },
{ json: { label: '大阪', areaCode: '270000' } },
{ json: { label: '福岡', areaCode: '400000' } },
];
areaCode は気象庁のエリアコードです。失敗する側を試したいときは、どれか1件を
'999999' にしてください。 404 になります。
3リクエストが6アイテムになる
実行すると、線の上に流れたアイテム数が出ます。ここを見てください。

- 取得する地域 → 予報を取得: 3 items(3地域)
- 予報を取得 → 今日の天気だけ取り出す: 6 items
- 今日の天気だけ取り出す → : 3 items
3件送ったのに6件返っています。 気象庁のレスポンスはトップレベルが2要素の配列で、 n8n は配列を受け取ると要素ごとにアイテムへ分けるためです (HTTP Request の記事に書いた挙動です)。
1件目が3日間の予報、2件目が週間予報です。週間予報の方には weathers が無いので、
「今日の天気だけ取り出す」で落としています。
const area = series[0].areas[0];
if (!area.weathers) continue; // 週間予報を捨てる
この1行を書かないと、空っぽのアイテムが3件混ざります。 前にこれで 「4件のはずが7件出る」という間違いを記事に書きました。
失敗したときに何が起きるか
1地域を '999999' にして実行した結果です。
成功側には2件だけが流れ、エラー側にはこれが届きました。
{
"label": "大阪",
"areaCode": "999999",
"httpCode": "404",
"message": "The resource you are requesting could not be found",
"failedAt": "2026-09-25T02:44:44.434Z"
}
ワークフロー全体の結果は success です。1件失敗しても止まらず、 東京と福岡の予報はちゃんと取れています。
ポイントは label と areaCode が残っていることです。エラー出力には元の入力が
そのまま残った上にエラー情報が足されるので、どの対象で失敗したのかが分かります。
これは Continue では消えてしまう情報です。
再試行を入れていない理由
このテンプレートには Retry On Fail を入れていません。 意図的です。
最初は入れていました。Retry On Fail: true / Max. Tries: 3 にした状態で
実行時間を測ったところ、再試行の待ち時間がまったく発生していませんでした。
同じ404に対して On Error だけを変えて測った結果がこれです。
| On Error | ノードの実行時間 | 再試行 |
|---|---|---|
| Stop Workflow | 2,793ms | された |
| Continue (using error output) | 343ms未満 | されない |
エラー出力を使うと、Retry On Fail は発動しません。 設定欄は有効なままで、 警告も出ません。入れたままにすると「再試行しているつもりで、していない」ものを 配ることになるので、外しました。
一時的な失敗に強くしたいなら、この型は向きません。 Stop Workflow に戻して
Retry On Fail を使うことになります。ただしその場合、1件失敗すると全部止まります。
この挙動の詳細は n8n でエラーが起きたとき、後続ノードには何が届くのか に書きました。
ここから先の繋ぎ方
このテンプレートは整形したところで止めてあります。 通知や保存は環境によって違うので、 入れていません。繋ぐならこうなります。
- 成功側の後ろ → Slack、メール、Google Sheets など
- 失敗側の後ろ → 同じく通知、またはログ用のシートに追記
失敗側は1行の平たいオブジェクトにしてあるので、Google Sheets の Append にそのまま渡せる形です。
ワークフロー全体が落ちたときの通知は、また別の仕組みです。 n8n のエラー通知は、手動実行では飛ばない を参照してください。
検証していないこと
- Publish して定時実行させるところまでは試していません。 手動実行での確認だけです。 Schedule Trigger のタイムゾーンは環境の設定を引き継ぐので、7:00 がどの時刻になるかは 各自の環境で確認してください
- 失敗のさせ方は 404(存在しないURL)1パターンです。タイムアウトや接続不能で 同じ形のエラーが出るかは見ていません
- 通知・保存ノードは繋いでいないので、そこから先が動く保証はできません
- 対象は3件で試しました。数十件・数百件に増やしたときの所要時間やレート制限は 確認していません
- ノードごとのエラー設定は n8n でエラーが起きたとき、後続ノードには何が届くのか
- HTTP まわりの設定は HTTP Request ノードの使い方
- 定時実行の設定は Schedule Trigger の使い方