8
n8n 中文网amn8n.com

自动化演示预约系统

高级

这是一个Miscellaneous, Multimodal AI领域的自动化工作流,包含 21 个节点。主要使用 If, Set, Code, Form, Zoom 等节点。 集成 Outlook 日历和 Zoom 的自动化演示预约系统

前置要求
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "04c7c3f1743831184e4a6edaf1f906dbab0c745cc98b8af3ef7660bbefe74cb4"
  },
  "nodes": [
    {
      "id": "3f6e9ca9-e576-4c65-aa5f-73ccdc775b84",
      "name": "便签16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        -208
      ],
      "parameters": {
        "color": 7,
        "width": 3032,
        "height": 84,
        "content": "# 🚀 现场演示请求"
      },
      "typeVersion": 1
    },
    {
      "id": "7c4f06a8-2e33-4b3c-b4a9-bf7a2d8a1b07",
      "name": "选择日期和时间",
      "type": "n8n-nodes-base.form",
      "onError": "continueRegularOutput",
      "position": [
        1680,
        192
      ],
      "webhookId": "f9d145b7-2cb6-43ff-830f-cc2948f8a8e7",
      "parameters": {
        "options": {
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Center container */\n.container {\n  max-width: 600px !important;\n  margin: 0 auto !important;\n}\n\n.card .form-group {\n  margin-top: 4px !important;\n  margin-bottom: 4px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 10px !important;\n    padding: 15px !important;\n  }\n  .card:before {\n    height: 50px !important;\n    margin: -15px -15px 20px -15px !important;\n  }\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.7em !important;\n    margin: 20px 0 15px 0 !important;\n  }\n}\n",
          "formTitle": "Select your preferred time",
          "buttonLabel": "Submit"
        },
        "defineForm": "json",
        "jsonOutput": "=[{{ $json.form }}]"
      },
      "typeVersion": 1
    },
    {
      "id": "4152a07b-0210-4b26-92cb-d9cd6c31a7a8",
      "name": "表单提交时",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        48,
        -96
      ],
      "webhookId": "bcca93f9-97ab-4f71-ba97-9601f086d20a",
      "parameters": {
        "options": {
          "path": "yourcompany-demo-request",
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 5px !important;\n    padding: 15px !important;\n    max-width: 100% !important;\n    box-shadow: none !important; /* optional: flatter design for mobile */\n  }\n\n  .card:before {\n    height: 40px !important;\n    margin: -15px -15px 20px -15px !important;\n    border-radius: 10px 10px 0 0 !important;\n  }\n\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.4em !important;\n    margin: 5px 0 5px 0 !important;\n  }\n\n  .card input[type=\"text\"],\n  .card input[type=\"email\"],\n  .card input[type=\"tel\"],\n  .card input[type=\"number\"],\n  .card textarea,\n  .card select {\n    font-size: 15px !important;\n    padding: 10px 12px !important;\n  }\n\n  .card button[type=\"submit\"],\n  .card input[type=\"submit\"] {\n    font-size: 16px !important;\n    padding: 12px 20px !important;\n  }\n\n  .container {\n    padding: 0 5px !important;\n    max-width: 100% !important;\n  }\n\n  .card .form-group {\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n  }\n}",
          "buttonLabel": "Let's Schedule",
          "appendAttribution": false
        },
        "formTitle": "Live Demo Request",
        "formDescription": "Request a live demo of our software"
      },
      "typeVersion": 2.2
    },
    {
      "id": "e2c3bdf4-e85d-4f22-aac4-3a4791dc583a",
      "name": "Outlook 日历检查可用性",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        816,
        48
      ],
      "parameters": {
        "url": "https://graph.microsoft.com/v1.0/me/calendarView",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "startDateTime",
              "value": "={{ $json[\"Select the date you would you require a demo\"] }}T00:00:00"
            },
            {
              "name": "endDateTime",
              "value": "={{\n  (() => {\n    const d = new Date($json[\"Select the date you would you require a demo\"]);\n    d.setDate(d.getDate() + 30);\n    return d.toLocaleDateString('en-CA') + 'T23:59:59';\n  })()\n}}"
            },
            {
              "name": "$top",
              "value": "3"
            },
            {
              "name": "$orderby\t",
              "value": "start/dateTime asc"
            },
            {
              "name": "$filter",
              "value": "startsWith(subject,'Online Meeting Slot')"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "outlook.timezone=\"Asia/Dubai\""
            }
          ]
        },
        "nodeCredentialType": "microsoftOutlookOAuth2Api"
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e112995a-c635-4a2a-b1e6-790cf828129c",
      "name": "设置事件",
      "type": "n8n-nodes-base.code",
      "onError": "continueRegularOutput",
      "position": [
        1328,
        64
      ],
      "parameters": {
        "jsCode": "// items passed in are the HTTP Request output\n// which returns { value: [ /* events */ ] }\nconst events = $input.first().json.value || [];\n\n// 2) map into slot objects\nconst newSlots = events.map(e => {\n  // Parse ISO string into Date object\n  const d = new Date(e.start.dateTime);\n\n  // Format: Wednesday 20 August 2025 11:00\n  const formatted = d.toLocaleString(\"en-GB\", {\n    weekday: \"long\",\n    day: \"2-digit\",\n    month: \"long\",\n    year: \"numeric\",\n    hour: \"2-digit\",\n    minute: \"2-digit\",\n    hour12: false\n  });\n\n  return {\n    time: formatted,\n    subject: e.subject,\n    start: e.start.dateTime,\n    end: e.end.dateTime,\n    id: e.id\n  };\n});\n\n// 3) return each slot as its own item\nreturn newSlots.map(slot => ({ json: slot }));\n\n\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "9317b0c9-f67b-4b5b-8f2c-347f218b4686",
      "name": "设置表单日期",
      "type": "n8n-nodes-base.code",
      "onError": "continueRegularOutput",
      "position": [
        1520,
        192
      ],
      "parameters": {
        "jsCode": "// 1. Pull in all event objects\nconst events = items.map(item => item.json);\n\n// 2. Build your dropdown object\nconst dropdown = {\n  fieldLabel: \"Select one of our available time\",\n  fieldType: \"dropdown\",\n  fieldOptions: {\n    values: events.map(e => {\n      // Parse the time string into a Date object\n      return { option: e.time };\n    })\n  },\n  requiredField: true\n};\n\n// 3. Combine into a single JS array: dropdown first, then each event\nconst combined = [{ form: dropdown }, ...events];\n\nreturn combined.map(json => ({ json }));\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5ca66c67-4ad4-4204-96ec-e55614d5f317",
      "name": "选择新日期",
      "type": "n8n-nodes-base.form",
      "position": [
        1040,
        304
      ],
      "webhookId": "f883fef9-ae26-4276-9886-248a747bff6c",
      "parameters": {
        "options": {
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Center container */\n.container {\n  max-width: 600px !important;\n  margin: 0 auto !important;\n}\n\n.card .form-group {\n  margin-top: 4px !important;\n  margin-bottom: 4px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 5px !important;\n    padding: 15px !important;\n    max-width: 100% !important;\n    box-shadow: none !important; /* optional: flatter design for mobile */\n  }\n\n  .card:before {\n    height: 40px !important;\n    margin: -15px -15px 20px -15px !important;\n    border-radius: 10px 10px 0 0 !important;\n  }\n\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.4em !important;\n    margin: 5px 0 5px 0 !important;\n  }\n\n  .card input[type=\"text\"],\n  .card input[type=\"email\"],\n  .card input[type=\"tel\"],\n  .card input[type=\"number\"],\n  .card textarea,\n  .card select {\n    font-size: 15px !important;\n    padding: 10px 12px !important;\n  }\n\n  .card button[type=\"submit\"],\n  .card input[type=\"submit\"] {\n    font-size: 16px !important;\n    padding: 12px 20px !important;\n  }\n\n  .container {\n    padding: 0 5px !important;\n    max-width: 100% !important;\n  }\n\n  .card .form-group {\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n  }\n}\n",
          "formTitle": "Previous selected date is unavailable",
          "buttonLabel": "Submit",
          "formDescription": "Please, select a new date"
        },
        "formFields": {
          "values": [
            {
              "fieldType": "date",
              "fieldLabel": "Select the date you would you require a demo",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4dcf3659-6ee2-45e8-8340-b3261c9ad1df",
      "name": "Outlook 更新事件",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        2656,
        48
      ],
      "parameters": {
        "url": "=https://graph.microsoft.com/v1.0/me/events/{{ $('Persist Selected Date&Time').item.json.id }}",
        "method": "PATCH",
        "options": {},
        "jsonBody": "={\n    \"categories\":[\"Booked\",\"Online meeting\"],\n    \"subject\": \"Live Demo Booked\",\n    \"showAs\": \"busy\",\n    \"body\": {\n      \"contentType\": \"HTML\",\n      \"content\": \"{{$json.content}}\"\n    },\n    \"attendees\": [\n      {\n        \"emailAddress\": {\n          \"address\": \"{{$json.your_email}}\",\n          \"name\": \"{{$json.your_name}}\"\n        },\n        \"type\": \"required\"\n      },\n      {\n        \"emailAddress\": {\n          \"address\": \"{{ $('Persist Selected Date&Time').item.json['Contact Email'] }}\",\n          \"name\": \"{{ $('Persist Selected Date&Time').item.json['Full Contact Name'] }}\"\n        },\n        \"type\": \"required\"\n      }\n    ]\n\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "microsoftOutlookOAuth2Api"
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "211a666f-c3cc-48fe-9769-0769e866dc61",
      "name": "最终表单",
      "type": "n8n-nodes-base.form",
      "onError": "continueRegularOutput",
      "position": [
        2848,
        64
      ],
      "webhookId": "1747f9ae-0f60-480b-a912-21e116dd63f5",
      "parameters": {
        "options": {
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Center container */\n.container {\n  max-width: 600px !important;\n  margin: 0 auto !important;\n}\n\n.card .form-group {\n  margin-top: 4px !important;\n  margin-bottom: 4px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 5px !important;\n    padding: 15px !important;\n    max-width: 100% !important;\n    box-shadow: none !important; /* optional: flatter design for mobile */\n  }\n\n  .card:before {\n    height: 40px !important;\n    margin: -15px -15px 20px -15px !important;\n    border-radius: 10px 10px 0 0 !important;\n  }\n\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.4em !important;\n    margin: 5px 0 5px 0 !important;\n  }\n\n  .card input[type=\"text\"],\n  .card input[type=\"email\"],\n  .card input[type=\"tel\"],\n  .card input[type=\"number\"],\n  .card textarea,\n  .card select {\n    font-size: 15px !important;\n    padding: 10px 12px !important;\n  }\n\n  .card button[type=\"submit\"],\n  .card input[type=\"submit\"] {\n    font-size: 16px !important;\n    padding: 12px 20px !important;\n  }\n\n  .container {\n    padding: 0 5px !important;\n    max-width: 100% !important;\n  }\n\n  .card .form-group {\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n  }\n}\n"
        },
        "operation": "completion",
        "completionTitle": "Live Demo Scheduled",
        "completionMessage": "=✅ All set! Your Live Demo is booked on  \n{{ \n  new Date($('Persist Selected Date&Time').item.json.start)\n    .toLocaleDateString('en-GB', { weekday:'long', day:'numeric', month:'long' })\n    .replace(',', '') \n}}  \n\nFrom {{ \n  new Date($('Persist Selected Date&Time').item.json.start)\n    .toLocaleTimeString('en-GB', { hour:'2-digit', minute:'2-digit', hour12:false })\n}}  \nTo   {{ \n  new Date($('Persist Selected Date&Time').item.json.end)\n    .toLocaleTimeString('en-GB', { hour:'2-digit', minute:'2-digit', hour12:false })\n}}  \n\nA calendar invite is on its way.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4f82e490-51b7-40a0-9be0-f52fac0ab533",
      "name": "获取日期",
      "type": "n8n-nodes-base.merge",
      "onError": "continueRegularOutput",
      "position": [
        1872,
        80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "mergeByFields": {
          "values": [
            {
              "field1": "time",
              "field2": "Select one of our available time"
            }
          ]
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "682a04fe-6001-4ebf-b8a7-a6dbb7caa07f",
      "name": "表单失败",
      "type": "n8n-nodes-base.form",
      "onError": "continueRegularOutput",
      "position": [
        64,
        672
      ],
      "webhookId": "089c6df2-4400-4266-8ce5-bf6f05af9fc3",
      "parameters": {
        "options": {
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Center container */\n.container {\n  max-width: 600px !important;\n  margin: 0 auto !important;\n}\n\n.card .form-group {\n  margin-top: 4px !important;\n  margin-bottom: 4px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 5px !important;\n    padding: 15px !important;\n    max-width: 100% !important;\n    box-shadow: none !important; /* optional: flatter design for mobile */\n  }\n\n  .card:before {\n    height: 40px !important;\n    margin: -15px -15px 20px -15px !important;\n    border-radius: 10px 10px 0 0 !important;\n  }\n\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.4em !important;\n    margin: 5px 0 5px 0 !important;\n  }\n\n  .card input[type=\"text\"],\n  .card input[type=\"email\"],\n  .card input[type=\"tel\"],\n  .card input[type=\"number\"],\n  .card textarea,\n  .card select {\n    font-size: 15px !important;\n    padding: 10px 12px !important;\n  }\n\n  .card button[type=\"submit\"],\n  .card input[type=\"submit\"] {\n    font-size: 16px !important;\n    padding: 12px 20px !important;\n  }\n\n  .container {\n    padding: 0 5px !important;\n    max-width: 100% !important;\n  }\n\n  .card .form-group {\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n  }\n}\n"
        },
        "operation": "completion",
        "completionTitle": "⚠️ Submission Failed",
        "completionMessage": "=Something went wrong while submitting your live demo request.\nPlease try again in a moment.\nIf the issue persists, contact our support team at info@yourcompany.ae or call us at +971 55 5555 55 55 we’ll be happy to assist you."
      },
      "typeVersion": 1
    },
    {
      "id": "926d46af-3943-48c6-b178-4d1dc539b509",
      "name": "新时段可用?",
      "type": "n8n-nodes-base.if",
      "onError": "continueRegularOutput",
      "position": [
        1024,
        48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5be8bde8-b6fb-48cd-a5c7-4f425a9e0923",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            },
            {
              "id": "4d152d98-636a-4521-a30e-489d1d2ca2b4",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.value }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "befe75b8-157e-40b7-a595-2477f5d8543f",
      "name": "创建 Zoom 会议",
      "type": "n8n-nodes-base.zoom",
      "onError": "continueErrorOutput",
      "position": [
        2320,
        48
      ],
      "parameters": {
        "topic": "=Live Demo - {{ $json[\"Company trade name\"] }}",
        "authentication": "oAuth2",
        "additionalFields": {
          "duration": 40,
          "timeZone": "Asia/Dubai",
          "startTime": "={{ $json.start }}"
        }
      },
      "credentials": {
        "zoomOAuth2Api": {
          "id": "",
          "name": ""
        }
      },
      "typeVersion": 1
    },
    {
      "id": "389efd9d-165d-4648-a129-c2c741fcd16a",
      "name": "持久化选择的日期和时间",
      "type": "n8n-nodes-base.merge",
      "onError": "continueRegularOutput",
      "position": [
        2096,
        -80
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "e0552e28-e7dc-4a1d-b2d5-13b62af932d4",
      "name": "客户详情",
      "type": "n8n-nodes-base.form",
      "onError": "continueRegularOutput",
      "position": [
        256,
        -96
      ],
      "webhookId": "56d36c5c-f7a4-4b2e-bf24-a33bfcb13bd4",
      "parameters": {
        "options": {
          "customCss": "/* N8N Landing Page CSS – Header-matching Blues */\n\n/* Style the main form card */\n.card {\n  position: relative;\n  max-width: 500px;\n  margin: 20px auto;\n  padding: 20px;\n  background: white !important;\n  border-radius: 12px;\n  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n/* Header bar with your header gradient */\n.card:before {\n  content: '';\n  display: block;\n  height: 50px;\n  background: linear-gradient(135deg, #0A3E7B 0%, #1565C0 100%) !important;\n  position: relative;\n  margin: -20px -20px 30px -20px;\n  border-radius: 12px 12px 0 0;\n}\n\n/* Titles in deep blue */\n.form-header,\n.card h1,\n.card h2 {\n  text-align: center !important;\n  color: #0A3E7B !important;\n  font-weight: 500 !important;\n  font-size: 1.6em !important;\n  margin: 20px 0 15px 0 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Description copy in a cool neutral */\n.card p {\n  text-align: center !important;\n  color: #475569 !important;\n  position: relative;\n  z-index: 5;\n}\n\n/* Inputs wrapper keeps above the gradient */\n.inputs-wrapper {\n  position: relative;\n  z-index: 5;\n}\n\n/* Form fields with blue focus */\n.card input[type=\"text\"],\n.card input[type=\"email\"],\n.card input[type=\"tel\"],\n.card input[type=\"number\"],\n.card textarea,\n.card select {\n  width: 100% !important;\n  padding: 12px 16px !important;\n  border: 2px solid #E5E7EB !important;\n  border-radius: 8px !important;\n  font-size: 16px !important;\n  transition: border-color 0.3s ease !important;\n  box-sizing: border-box !important;\n}\n\n.card input:focus,\n.card textarea:focus,\n.card select:focus {\n  outline: none !important;\n  border-color: #0A3E7B !important;\n  box-shadow: 0 0 0 3px rgba(10, 62, 123, 0.1) !important;\n}\n\n/* Submit button in a mid-to-light blue gradient */\n.card button[type=\"submit\"],\n.card input[type=\"submit\"] {\n  background: linear-gradient(135deg, #1565C0 0%, #64B5F6 100%) !important;\n  color: white !important;\n  border: none !important;\n  padding: 15px 40px !important;\n  border-radius: 10px !important;\n  font-size: 18px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n  width: 100% !important;\n  margin-top: 10px !important;\n  transition: all 0.3s ease !important;\n  box-shadow: 0 4px 15px rgba(21, 101, 192, 0.3) !important;\n  position: relative;\n  z-index: 5;\n}\n\n.card button:hover,\n.card input[type=\"submit\"]:hover {\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(21, 101, 192, 0.4) !important;\n}\n\n/* Page background to complement the pale side of your header */\nbody.vsc-initialized {\n  background: #EEF6FF !important;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  margin: 0 !important;\n  padding: 20px !important;\n}\n\n/* Center container */\n.container {\n  max-width: 600px !important;\n  margin: 0 auto !important;\n}\n\n.card .form-group {\n  margin-top: 4px !important;\n  margin-bottom: 4px !important;\n}\n\n/* Mobile tweaks */\n@media (max-width: 768px) {\n  .card {\n    margin: 5px !important;\n    padding: 15px !important;\n    max-width: 100% !important;\n    box-shadow: none !important; /* optional: flatter design for mobile */\n  }\n\n  .card:before {\n    height: 40px !important;\n    margin: -15px -15px 20px -15px !important;\n    border-radius: 10px 10px 0 0 !important;\n  }\n\n  .form-header,\n  .card h1,\n  .card h2 {\n    font-size: 1.4em !important;\n    margin: 5px 0 5px 0 !important;\n  }\n\n  .card input[type=\"text\"],\n  .card input[type=\"email\"],\n  .card input[type=\"tel\"],\n  .card input[type=\"number\"],\n  .card textarea,\n  .card select {\n    font-size: 15px !important;\n    padding: 10px 12px !important;\n  }\n\n  .card button[type=\"submit\"],\n  .card input[type=\"submit\"] {\n    font-size: 16px !important;\n    padding: 12px 20px !important;\n  }\n\n  .container {\n    padding: 0 5px !important;\n    max-width: 100% !important;\n  }\n\n  .card .form-group {\n    margin-top: 6px !important;\n    margin-bottom: 6px !important;\n  }\n}\n",
          "formTitle": "Demo Request",
          "buttonLabel": "Submit"
        },
        "formFields": {
          "values": [
            {
              "fieldLabel": "Company trade name",
              "requiredField": true
            },
            {
              "fieldLabel": "Full Contact Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Contact Role",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Contact Email",
              "requiredField": true
            },
            {
              "fieldLabel": "Contact Phone",
              "placeholder": "050 111 2442",
              "requiredField": true
            },
            {
              "fieldType": "date",
              "fieldLabel": "Select the date you would you require a demo",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "965c381d-5c13-4b06-9fde-468e59325752",
      "name": "所选日期有可用时段?",
      "type": "n8n-nodes-base.if",
      "onError": "continueRegularOutput",
      "position": [
        496,
        64
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "680bb6fe-eede-40d6-9e8b-995f74a53645",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{\n  (new Date($json['Select the date you would you require a demo']).getTime()) >= new Date().getTime()\n}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e055f836-1d14-4c59-84ea-608826085bf2",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        32
      ],
      "parameters": {
        "color": 5,
        "width": 800,
        "height": 688,
        "content": "## 日期可用性"
      },
      "typeVersion": 1
    },
    {
      "id": "e5c4d914-9e04-4b37-8b70-e520a2ffb2ee",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1248,
        32
      ],
      "parameters": {
        "color": 6,
        "width": 800,
        "height": 688,
        "content": "## 时间可用性"
      },
      "typeVersion": 1
    },
    {
      "id": "036184e2-f87c-4237-adc3-768aea38903c",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2064,
        32
      ],
      "parameters": {
        "color": 4,
        "width": 992,
        "height": 688,
        "content": "## 创建 Zoom 链接 - 更新事件 - 发送邀请"
      },
      "typeVersion": 1
    },
    {
      "id": "1a50e67c-d2eb-4929-9433-a3b9649b64d2",
      "name": "设置事件字段",
      "type": "n8n-nodes-base.set",
      "position": [
        2496,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "17e17f08-3b06-480e-b363-d4fd704eea12",
              "name": "content",
              "type": "string",
              "value": "=<h2>\n<strong>{{ $('Persist Selected Date&Time').item.json['Company trade name'] }}</strong>\n</h2>\n\n<p>\n<strong>Requested by: </strong>{{ $('Persist Selected Date&Time').item.json['Full Contact Name'] }}</p>\n\n<p><strong>Role: </strong>{{ $('Persist Selected Date&Time').item.json['Contact Role'] }}</p>\n\n<p><strong>Phone: </strong>{{ $('Persist Selected Date&Time').item.json['Contact Phone'] }}</p>\n\n<p><strong>Email: </strong>{{ $('Persist Selected Date&Time').item.json['Contact Email'] }}</p>\n\n<p>Subject: Your Company Live Demo</p>\n\n<p>Kindly join via Zoom: <a href=\\\"{{ $json.join_url }}\\\">{{ $json.join_url }}</a></p>\n\n<p>For more information visit our website <a href=\\\"https://yourwebsite.ae\\\">www.yourwebsite.ae</a></p>"
            },
            {
              "id": "899d0b17-6726-4e7b-9880-6a54d307b2f2",
              "name": "your_email",
              "type": "string",
              "value": "John"
            },
            {
              "id": "3633f129-47b2-4754-9a2e-977090356cdc",
              "name": "your_name",
              "type": "string",
              "value": "Smith"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8eb535b6-1947-4c30-a65a-817bdf680189",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -768,
        -208
      ],
      "parameters": {
        "width": 704,
        "height": 944,
        "content": "#### 使用 Outlook + Zoom 进行现场演示预订"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Get Date": {
      "main": [
        [
          {
            "node": "Persist Selected Date&Time",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Set Events": {
      "main": [
        [
          {
            "node": "Set Form Dates",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Client Details": {
      "main": [
        [
          {
            "node": "Selected Date Has Slot Available?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Persist Selected Date&Time",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Form Dates": {
      "main": [
        [
          {
            "node": "Select Date&Time",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select New Date": {
      "main": [
        [
          {
            "node": "Selected Date Has Slot Available?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Select Date&Time": {
      "main": [
        [
          {
            "node": "Get Date",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Set Event Fields": {
      "main": [
        [
          {
            "node": "Outlook Update Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Client Details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Zoom meeting": {
      "main": [
        [
          {
            "node": "Set Event Fields",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Form Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Slot Available?": {
      "main": [
        [
          {
            "node": "Set Events",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Select New Date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outlook Update Event": {
      "main": [
        [
          {
            "node": "Final Form",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Form Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Persist Selected Date&Time": {
      "main": [
        [
          {
            "node": "Create Zoom meeting",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Selected Date Has Slot Available?": {
      "main": [
        [
          {
            "node": "Outlook Calendar CheckAvailability",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Select New Date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Outlook Calendar CheckAvailability": {
      "main": [
        [
          {
            "node": "New Slot Available?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Form Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 杂项, 多模态 AI

需要付费吗?

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

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

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

作者
AureusR

AureusR

@aureusr

Experienced Operations and Workflow Manager with a Master’s degree in Electronics and Software Development. I specialize in designing and implementing efficient, automated systems that help teams save time, reduce errors, and scale with confidence. My expertise spans across business process optimization, automation platforms, and custom workflow solutions. Looking to streamline your operations? Book a consultation with me to explore tailored automation strategies and n8n-powered workflows.

外部链接
在 n8n.io 查看

分享此工作流