このレッスンのロックを解除するには、まず「レッスン5:式、データマッピング、変換」を完了してください。前のレッスンに戻る

はじめに

ここまでで、n8nのインターフェースを操作し、ノードを理解し、トリガーとアクションを個別に試してきました。このレッスンで、すべてがつながります。実際のトリガー、複数のステップでデータを処理し、目に見える出力を生成する、完全な動作するワークフローをゼロから構築します。目標は一度だけ実行することではなく、タッチしなくても自動的に実行されるように有効化することです。

このレッスンで構築するワークフロー:フォームに新しいエントリが送信される(またはWebhook経由で到着する)と、データが変換され、条件チェックが適用され、Slackチャンネルに通知が送信されます。このパターン — 受信、処理、判断、行動 — は実際の自動化ユースケースの約80%に現れるため、一度マスターすれば再利用可能なメンタルモデルが得られます。

4つの順次ステージを示すフローチャート:トリガー(Webhook/フォーム)→ データ変換 → 条件チェック(IFノード)→ 出力アクション(Slack/メール)

トリガーのセットアップ

n8nで新しいワークフローを開始します。キャンバスをクリックして、Webhookノードをトリガーとして追加します。HTTPメソッドをPOSTに設定し、生成されたWebhook URLをメモしてください —テストデータの送信に使用します。

Webhookノード設定で、「Response Mode」を「Last Node」に設定し、ワークフロー全体が終了してからn8nが呼び出し元に応答するようにします。これは、Webhook呼び出し元が確認応答を期待する場合に重要です。

テストペイロードを送信するには、curlや任意のHTTPクライアントを使用します:

bash
curl -X POST https://your-n8n-instance/webhook/your-webhook-id \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "score": 87, "email": "alice@example.com"}'

curlコマンドを実行する前に、n8nで「Listen for Test Event」をクリックします。ペイロードが到着すると、n8nはデータをノードに固定します — ビルドセッション中、すべての下流ノードがそのデータを参照できるようになります。

Setノードによるデータ変換

生のWebhookデータは、下流で必要な正確な形状になっていないことがよくあります。Webhookノードの後にSetノードを追加して、受信データの形状を変更または拡張します。

この例では、名前を大文字に正規化し、スコアをグレードとしてラベル付けする計算フィールドを追加します:

javascript
// Inside Set node — Expression field for "grade"
{{ $json.score >= 90 ? 'A' : $json.score >= 75 ? 'B' : 'C' }}

Setノードを「Keep Only Set」をオンにして、必要なフィールド(name、email、score、grade)のみを保持するように設定します。これにより、データが次のノードに流れる際に整理された状態を保ち、予期しないフィールドが外部APIに誤って渡されるのを防ぎます。

保存後、「Execute Node」を使用して出力を確認します。gradeフィールドが入力された変換済みアイテムが表示されます。

IFノードによる条件ロジックの追加

すべての送信が同じアクションをトリガーするべきではありません。高得点者にはお祝いのメッセージが、それ以外の人には励ましのメッセージが送られるかもしれません。IFノードがこの分岐を処理します。

Setノードの後にIFノードを追加します。gradeフィールドをチェックする条件を設定します:

javascript
// IF node condition
{{ $json.grade }} equals A

IFノードは2つの分岐を出力します:「true」(グレードがA)と「false」(その他すべて)。Slackノードをtrue分岐に、もう一つのSlackノード(またはEmailノード)をfalse分岐に接続します。これがn8nの条件付きパスの処理方法です:if/elseコードを書くのではなく、両方の出力を明示的に配線します。

IFノードと2つの出力分岐を示す図:true分岐が「High Score Slack Message」ノードにつながり、false分岐が「Encouragement Slack Message」ノードにつながる

出力アクションの接続

true分岐にSlackノードを追加します。n8nで設定されたSlack認証情報(Settings → Credentials → New → Slack OAuth2)が必要になります。接続したら、ノードを設定します:

json
{
"channel": "#notifications",
"text": "🎉 {{ $json.name }} scored an A ({{ $json.score }}) — great result!"
}

false分岐については、Slackノードを複製してメッセージを変更します:

json
{
"channel": "#notifications",
"text": "📬 {{ $json.name }} completed the assessment with grade {{ $json.grade }} ({{ $json.score }})."
}

「Execute Workflow」ボタンを使用してワークフロー全体を実行します。Slackチャンネルを確認して、正しい内容のメッセージが表示されているか確認します。Slack APIエラーが表示された場合、最も一般的な原因はOAuthアプリのチャンネルスコープの欠落、またはボットがチャンネルに招待されていないことです。

テスト、修正、有効化

有効化する前に、異なるペイロードで少なくとも2回ワークフローを実行します — true分岐をトリガーするものと、false分岐をトリガーするものです:

bash
# Test false branch — score below 90
curl -X POST https://your-n8n-instance/webhook/your-webhook-id \
-H "Content-Type: application/json" \
-d '{"name": "Bob", "score": 72, "email": "bob@example.com"}'

実行後、各ノードをクリックして出力を確認します。下部の実行ログパネルは、どのパスが実行されたかと各ステップのデータを示します。これが主要なデバッグツールです。

両方のパスが正しく動作することを確認したら、ワークフローにわかりやすい名前を付け(左上のタイトルフィールド)、次に右上のActiveトグルを切り替えます。Webhook URLが本番稼働します — n8nは受信するすべてのPOSTリクエストに対して、クリック操作なしでワークフローを自動的に実行します。

完了とみなす前に再確認すべき点:本番用Webhook URL(テスト用URLではない)であることを確認し、外部サービスが呼び出す必要がある場合はn8nインスタンスがインターネットから到達可能であることを確認し、実際のサービスに接続する場合は認証情報がテスト/サンドボックストークンを使用していないことを確認します。

まとめ

Webhookトリガー、データ変換用のSetノード、分岐ロジック用のIFノード、出力用のSlackノードからなる、完全な4ノードのワークフローを構築しました。さらに重要なことに、有効化しました — ワークフローは自律的に動作するようになりました。ここで実践した受信-処理-判断-行動のパターンは、今後構築するほぼすべての自動化の基盤です。ここから、さまざまなトリガー(スケジュール、メール、データベースイベント)やさまざまな出力アクション(Google Sheets、HTTPリクエスト、内部API)に置き換えることは、構造が同じであるため簡単です。

レッスンの練習

レッスンのチェックポイント

学んだ内容を復習し、回答へのフィードバックを受けましょう。

0/1
回答済み · 0/1