- 動作確認日:2026-10-01
- n8nのバージョン:2.41.3(Docker、セルフホスト)
起きたこと
Googleスプレッドシートの一覧から、まだ対応していない行だけGmailの下書きを作るワークフローを作りました。最後にRespond to Webhookで「○件の下書きを作りました」と返す作りです。
1回目は「2件の下書きを作りました」と返ってきました。ところが、全部の行が対応済みの状態で2回目を動かすと、200 は返ってきたものの、本文が空でした。
| 実行 | 返ってきたもの |
|---|---|
| 1回目(対象2件) | 200 「2件の下書きを作りました」 |
| 2回目(対象0件) | 200、本文は空 |
原因
対象の行を選ぶIfノードのtrue側に、1件も流れなかったためです。
Webhookノードの「Respond」を「Using ‘Respond to Webhook’ Node」にしていると、最後のRespond to Webhookノードまで処理が届いたときに、そこで決めた内容を返します。途中で処理が止まって、Respond to Webhookまで届かないときは、本文なしで応答が返りました。
対処:false側にもRespond to Webhookを置く
このあと作ったワークフローでは、Ifノードのfalse側にも、Respond to Webhookを1つ置くようにしました。
… → If(Has New)─ true → 通知を送る → Respond Sent(「○件を送りました」)
└ false → Respond None(「新着記事はありませんでした」)
ただし、ここで1つ注意があります。Ifノードの前で、データを1件にまとめておくのがおすすめです。複数のデータのままだと、true側とfalse側の両方に流れて、2つのRespond to Webhookが両方とも動くおそれがあります(今回は試していません)。今回は、Codeノードで「送る件数(count)」と「文章」を1件のデータにまとめてから、Ifノードで count が0より大きいかを見ています。
// まとめて1件にしてから、Ifノードに渡す
return [{ json: { count: fresh.length, text } }];
確かめたこと
この作りにした、Discord・LINE・Telegram・Slackへの通知のワークフローでは、2回目の実行で、どれも「新着記事はありませんでした」が返ってきました。
