自动预订确认与会议安排系统

高级

这是一个Lead Nurturing领域的自动化工作流,包含 23 个节点。主要使用 If、Set、Zoom、Gmail、Merge 等节点。 表单到会议:Google日历、Zoom、Gmail和Slack预订自动化

前置要求
  • Google 账号和 Gmail API 凭证
  • Slack Bot Token 或 Webhook URL
  • HTTP Webhook 端点(n8n 会自动生成)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "f86tpZtlEF8Fxt6s",
  "meta": {
    "instanceId": "189dde98270e9ce0f006f0e9deb96aa5e627396fc6279cac8902c9b06936984d"
  },
  "name": "自动预订确认与会议安排系统",
  "tags": [],
  "nodes": [
    {
      "id": "3dd27b86-6e03-4595-a9fa-2fe3d1210611",
      "name": "Google Forms Webhook1",
      "type": "n8n-nodes-base.webhook",
      "position": [
        176,
        208
      ],
      "webhookId": "0c79affb-61ad-4802-8580-66c5856d66cf",
      "parameters": {
        "path": "google-forms-booking",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "957b6711-281f-4599-9962-84ebf221691a",
      "name": "合并表单数据1",
      "type": "n8n-nodes-base.merge",
      "position": [
        496,
        224
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "3b63fe73-a5e7-4f3e-bf61-e7bd0a9aa63c",
      "name": "工作流配置1",
      "type": "n8n-nodes-base.set",
      "position": [
        848,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "calendarId",
              "type": "string",
              "value": "c_91f92ee12632d48cc78642add679d75aa8aecb09abea89eadbc97cb17d2de336@group.calendar.google.com"
            },
            {
              "id": "id-2",
              "name": "slackChannel",
              "type": "string",
              "value": "C09GN4NCTAP"
            },
            {
              "id": "id-3",
              "name": "teammateEmail",
              "type": "string",
              "value": "ojima@g-jete.com"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "66b2895b-8260-4e40-b4ec-39b100b89f77",
      "name": "提取预订详情1",
      "type": "n8n-nodes-base.set",
      "position": [
        1168,
        224
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "customerName",
              "type": "string",
              "value": "={{ $json.body.name }}"
            },
            {
              "id": "id-2",
              "name": "customerEmail",
              "type": "string",
              "value": "={{ $json.body.email }}"
            },
            {
              "id": "id-3",
              "name": "bookingDate",
              "type": "string",
              "value": "={{ $json.body.date }}"
            },
            {
              "id": "id-4",
              "name": "bookingTime",
              "type": "string",
              "value": "={{ $json.body.time }}"
            },
            {
              "id": "34865dea-9db2-4f35-b91b-322572680869",
              "name": "bookingStartISO",
              "type": "string",
              "value": "={{ new Date($json.body.date + 'T' + $json.body.time + ':00+09:00').toISOString() }}"
            },
            {
              "id": "941d5f18-54fd-41ad-8f46-c9f9f13fb32f",
              "name": "bookingEndISO",
              "type": "string",
              "value": "={{ new Date(new Date($json.body.date + 'T' + $json.body.time + ':00+09:00').getTime() + 60*60*1000).toISOString() }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "6591a8f7-2400-4de8-9fbe-b35271faf1f8",
      "name": "检查日历可用性1",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        1472,
        224
      ],
      "parameters": {
        "options": {},
        "timeMax": "={{ $json.bookingEndISO }}",
        "timeMin": "={{ $json.bookingStartISO }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration1').first().json.calendarId }}"
        },
        "operation": "getAll"
      },
      "typeVersion": 1.3,
      "alwaysOutputData": true
    },
    {
      "id": "d80641b0-9da6-491c-922f-d278c0f030c3",
      "name": "时间段是否可用?1",
      "type": "n8n-nodes-base.if",
      "position": [
        1824,
        224
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "14e9293a-f96c-45f1-b216-2c8aaf2fb3e2",
              "operator": {
                "type": "object",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "76a27cb5-7196-4564-a89a-85d5d0a41d52",
      "name": "创建日历事件1",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        2144,
        208
      ],
      "parameters": {
        "end": "={{ $('Extract Booking Details1').first().json.bookingEndISO }}",
        "start": "={{ $('Extract Booking Details1').first().json.bookingStartISO }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration1').first().json.calendarId }}"
        },
        "additionalFields": {
          "summary": "=Booking with {{ $('Extract Booking Details1').first().json.customerName }}",
          "attendees": [
            "={{ $('Extract Booking Details1').first().json.customerEmail }}"
          ],
          "description": "=Customer: {{ $('Extract Booking Details1').first().json.customerName }} ({{ $('Extract Booking Details1').first().json.customerEmail }})"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "9f4ca36f-8f02-43ee-8630-222958201959",
      "name": "创建 Zoom 会议1",
      "type": "n8n-nodes-base.zoom",
      "position": [
        2416,
        208
      ],
      "parameters": {
        "topic": "=Booking with {{ $('Extract Booking Details1').first().json.customerName }}",
        "authentication": "oAuth2",
        "additionalFields": {
          "duration": 60,
          "timeZone": "UTC",
          "startTime": "={{ $('Extract Booking Details1').first().json.bookingStartISO }}"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a31d67fa-38b4-4276-a0ad-56d1069f95dd",
      "name": "发送确认邮件1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2720,
        208
      ],
      "webhookId": "f28b9459-360b-4cad-9f2e-0d69654e795b",
      "parameters": {
        "sendTo": "={{ $('Extract Booking Details1').first().json.customerEmail }}",
        "message": "=Hi {{ $('Extract Booking Details1').first().json.customerName }},\n\nYour booking has been confirmed!\n\nDate & Time: {{ new Date($('Extract Booking Details1').first().json.bookingStartISO).toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }) }}\n\nZoom Meeting Link: {{ $json.join_url }}\n\nLooking forward to meeting you!\n\nBest regards",
        "options": {},
        "subject": "=Booking Confirmed: {{ new Date($('Extract Booking Details1').first().json.bookingStartISO).toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }) }}"
      },
      "typeVersion": 2.1
    },
    {
      "id": "b456c4f9-dcca-48a4-b750-f39e95df493f",
      "name": "在 Slack 上通知队友1",
      "type": "n8n-nodes-base.slack",
      "position": [
        3040,
        208
      ],
      "webhookId": "866a3241-98d2-4db1-b791-c8c8f83b99b9",
      "parameters": {
        "text": "=🎉 New booking confirmed!\n\n*Customer:* {{ $('Extract Booking Details1').first().json.customerName }} ({{ $('Extract Booking Details1').first().json.customerEmail }})\n*Date & Time:* {{ new Date($('Extract Booking Details1').first().json.bookingStartISO).toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }) }}\n*Zoom Link:* {{ $json.join_url }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration1').first().json.slackChannel }}"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "78d4ae92-b136-4bbe-ae52-a73a60c47a6c",
      "name": "发送不可用邮件1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2144,
        512
      ],
      "webhookId": "98dd0319-284e-4b12-a655-a57577571800",
      "parameters": {
        "sendTo": "={{ $('Extract Booking Details1').first().json.customerEmail }}",
        "message": "=Hi {{ $('Extract Booking Details1').first().json.customerName }},\n\nThank you for your booking request. Unfortunately, the requested time slot on {{ new Date($('Extract Booking Details1').first().json.bookingStartISO).toLocaleString('ja-JP', { timeZone: 'Asia/Tokyo' }) }} is not available.\n\nPlease submit a new booking request with an alternative time.",
        "options": {},
        "subject": "Time Slot Unavailable"
      },
      "typeVersion": 2.1
    },
    {
      "id": "9f8af7ba-09f1-46bb-9bc6-bb2d0b26d744",
      "name": "便签:Google Forms Webhook1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        -400
      ],
      "parameters": {
        "color": "white",
        "width": 768,
        "height": 528,
        "content": "标题:自动预订 → 日历 + Zoom + 邮件 + Slack"
      },
      "typeVersion": 1
    },
    {
      "id": "5eb1dc05-5c0f-44a0-9000-d4abdd74a981",
      "name": "便签:合并表单数据1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 256,
        "height": 176,
        "content": "目的:预订入口点。接收来自表单的 POST 负载(姓名、邮箱、日期、时间)。"
      },
      "typeVersion": 1
    },
    {
      "id": "967bcc58-fc07-4e4c-8b17-5f2a99f9287f",
      "name": "便签:工作流配置1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 272,
        "height": 176,
        "content": "目的:规范化/转发 webhook 数据,保持单个数据项在流程中移动。"
      },
      "typeVersion": 1
    },
    {
      "id": "663ecdf9-6f9d-481c-abe6-e7d8b3c34021",
      "name": "便签:提取预订详情1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 288,
        "height": 176,
        "content": "目的:可编辑常量的集中位置(例如 calendarId、slackChannel、teammateEmail)。"
      },
      "typeVersion": 1
    },
    {
      "id": "c12bee38-9494-43b7-9961-2e4971a92316",
      "name": "便签:检查日历可用性1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 272,
        "height": 176,
        "content": "目的:将表单字段映射到清晰的变量:customerName、customerEmail、bookingDate、bookingTime。"
      },
      "typeVersion": 1
    },
    {
      "id": "b58f33ab-ad60-4a98-9354-3ed1a1aeab72",
      "name": "便签:时间段是否可用?1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 256,
        "height": 176,
        "content": "目的:查询目标日历中与 bookingStartISO–bookingEndISO 重叠的事件。"
      },
      "typeVersion": 1
    },
    {
      "id": "b0b7376c-f552-4ce9-bd31-33919ba04618",
      "name": "便签:创建日历事件1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        384
      ],
      "parameters": {
        "color": "white",
        "width": 256,
        "height": 176,
        "content": "目的:根据可用性分支。"
      },
      "typeVersion": 1
    },
    {
      "id": "bb03b52c-ddc4-4896-9016-6d01ab6b68ec",
      "name": "便签:创建 Zoom 会议1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2000,
        16
      ],
      "parameters": {
        "color": "white",
        "width": 272,
        "content": "目的:在 Google Calendar 上预订时间,并将客人添加为参与者。"
      },
      "typeVersion": 1
    },
    {
      "id": "73736740-501f-4814-9722-e8576e2dd21f",
      "name": "便签:发送确认邮件1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2336,
        16
      ],
      "parameters": {
        "color": "white",
        "content": "目的:为确认的时间段创建 Zoom 会议。"
      },
      "typeVersion": 1
    },
    {
      "id": "6e9c22c3-0b31-47f9-ab96-4476e501175d",
      "name": "便签:在 Slack 上通知队友1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        16
      ],
      "parameters": {
        "color": "white",
        "width": 256,
        "content": "目的:向客人发送确认信息,包含本地(日本)日期/时间和 Zoom 链接。"
      },
      "typeVersion": 1
    },
    {
      "id": "b9aa000c-63a2-44b1-800a-c041a1582f64",
      "name": "便签:发送不可用邮件1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2064,
        672
      ],
      "parameters": {
        "color": "white",
        "width": 256,
        "content": "目的:当请求的时间段已被占用时通知客人,并请他们重新预订其他时间。"
      },
      "typeVersion": 1
    },
    {
      "id": "3904238d-39eb-40f0-879f-3f17e1afd303",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2960,
        16
      ],
      "parameters": {
        "content": "目的:向您指定的 Slack 频道发布简洁的预订摘要。"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "31e08b0e-50a9-485b-b16c-856d2311d0f5",
  "connections": {
    "Merge Form Data1": {
      "main": [
        [
          {
            "node": "Workflow Configuration1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Zoom Meeting1": {
      "main": [
        [
          {
            "node": "Send Confirmation Email1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Forms Webhook1": {
      "main": [
        [
          {
            "node": "Merge Form Data1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Calendar Event1": {
      "main": [
        [
          {
            "node": "Create Zoom Meeting1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration1": {
      "main": [
        [
          {
            "node": "Extract Booking Details1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Booking Details1": {
      "main": [
        [
          {
            "node": "Check Calendar Availability1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Time Slot Available?1": {
      "main": [
        [
          {
            "node": "Create Calendar Event1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Unavailable Email1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Confirmation Email1": {
      "main": [
        [
          {
            "node": "Notify Teammate on Slack1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Calendar Availability1": {
      "main": [
        [
          {
            "node": "Is Time Slot Available?1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

这是一个高级难度的工作流,适用于Lead Nurturing等场景。适合高级用户,包含 16+ 个节点的复杂工作流

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量23
分类1
节点类型9
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 上查看 →

分享此工作流