客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 28 个节点。主要使用 If, Code, Gmail, Slack, ClickUp 等节点。 客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
前置要求
- •Google 账号和 Gmail API 凭证
- •Slack Bot Token 或 Webhook URL
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (28)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "dXMSOO4Jr8OLjozm",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "客户入职帮助请求(Typeform 到 Gmail 和 Sheets)",
"tags": [],
"nodes": [
{
"id": "9fa1fad1-085e-4a81-b561-1b9bcf13156b",
"name": "Typeform触发器",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
-576,
576
],
"webhookId": "typeform-webhook",
"parameters": {
"formId": "cXaYXrBp"
},
"credentials": {
"typeformApi": {
"id": "BZNYDuO6Ymg0Gql2",
"name": "Typeform account"
}
},
"typeVersion": 1
},
{
"id": "1a77e0ab-86e6-4ef8-8e72-fad93fc4827c",
"name": "记录到 Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-352,
576
],
"parameters": {
"columns": {
"value": {
"Urgency": "={{ $json[\"How urgent is this request?\"] }}",
"Full Name": "={{ $json[\"What's your full name?\"] }}",
"Company/Team": "={{ $json[\"Which company or team are you from?\"] }}",
"Email Address": "={{ $json[\"What's your email address?\"] }}",
"Issue Details": "={{ $json[\"Please describe the issue or help you need in detail.\"] }}",
"Product/Service": "={{ $json[\"Which product/service are you getting onboarded to?\"] }}",
"Onboarding Support Needed": "={{ $json[\"What type of onboarding support do you need?\"] }}"
},
"schema": [
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Address",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company/Team",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company/Team",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Product/Service",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Product/Service",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Onboarding Support Needed",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Onboarding Support Needed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Issue Details",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Issue Details",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Urgency",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Urgency",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ZOwioaHTLWKltq6UbxzZh02UEBKfypdv_GOhcPu4fHg/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ZOwioaHTLWKltq6UbxzZh02UEBKfypdv_GOhcPu4fHg",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ZOwioaHTLWKltq6UbxzZh02UEBKfypdv_GOhcPu4fHg/edit?usp=drivesdk",
"cachedResultName": "onboarding requests"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4
},
{
"id": "cd2d4992-4229-4081-8ab3-e757e4e3d896",
"name": "检查邮箱是否存在",
"type": "n8n-nodes-base.if",
"position": [
-128,
576
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "email-check",
"operator": {
"type": "string",
"operation": "isNotEmpty"
},
"leftValue": "={{ $json.email }}",
"rightValue": ""
},
{
"id": "2c03e600-6592-4611-ba67-d68e7e610290",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Email }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "acb6dc41-37e1-4b4d-b850-a3b34ec43359",
"name": "发送欢迎邮件",
"type": "n8n-nodes-base.gmail",
"position": [
432,
480
],
"webhookId": "f5b7a5e6-aa6a-46db-8115-a62f0784bb41",
"parameters": {
"sendTo": "={{ $json.email }}",
"message": "={{ $json.html }}",
"options": {},
"subject": "Welcome to [Your Company]! Here are your onboarding resources"
},
"credentials": {
"gmailOAuth2": {
"id": "gEIaWCTvGfYjMSb3",
"name": "Gmail credentials"
}
},
"typeVersion": 2
},
{
"id": "0631a301-2647-4ff4-af72-4cea1b6d4a58",
"name": "生成专业邮件 HTML",
"type": "n8n-nodes-base.code",
"position": [
96,
480
],
"parameters": {
"jsCode": "// Generate professional email HTML format\nlet htmlOutput = '';\n\nfor (const item of $input.all()) {\n // Professional email template\n htmlOutput += `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"UTF-8\">\n <style>\n body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; margin: 0; padding: 20px; }\n .email-container { max-width: 600px; margin: 0 auto; background: #ffffff; border: 1px solid #e0e0e0; border-radius: 8px; overflow: hidden; }\n .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px 20px; text-align: center; }\n .header h1 { margin: 0; font-size: 24px; font-weight: 300; }\n .content { padding: 30px; }\n .greeting { font-size: 16px; margin-bottom: 20px; }\n .info-section { background: #f8f9fa; border-radius: 6px; padding: 20px; margin: 20px 0; }\n .info-title { font-size: 18px; font-weight: 600; color: #495057; margin-bottom: 15px; border-bottom: 2px solid #dee2e6; padding-bottom: 8px; }\n .info-row { display: flex; margin: 12px 0; padding: 8px 0; border-bottom: 1px solid #e9ecef; }\n .info-row:last-child { border-bottom: none; }\n .info-label { font-weight: 600; color: #6c757d; min-width: 180px; }\n .info-value { color: #495057; flex: 1; }\n .footer { background: #f8f9fa; padding: 20px; text-align: center; font-size: 14px; color: #6c757d; border-top: 1px solid #e0e0e0; }\n .signature { margin-top: 30px; padding-top: 20px; border-top: 1px solid #dee2e6; }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"header\">\n <h1>New Customer Inquiry</h1>\n </div>\n \n <div class=\"content\">\n <div class=\"greeting\">\n Dear Team,\n </div>\n \n <p>We have received a new customer inquiry through our contact form. Please find the details below and ensure appropriate follow-up action is taken.</p>\n \n <div class=\"info-section\">\n <div class=\"info-title\">Customer Details</div>`;\n \n // Loop through each key-value pair in the JSON object\n for (const [key, value] of Object.entries(item.json)) {\n htmlOutput += `\n <div class=\"info-row\">\n <div class=\"info-label\">${key}:</div>\n <div class=\"info-value\">${value}</div>\n </div>`;\n }\n \n htmlOutput += `\n </div>\n \n <p><strong>Next Steps:</strong></p>\n <ul>\n <li>Acknowledge receipt within 2 business hours</li>\n <li>Assign to appropriate team member based on product/service inquiry</li>\n <li>Schedule follow-up call if urgency is high</li>\n <li>Update CRM system with customer information</li>\n </ul>\n \n <div class=\"signature\">\n <p>Best regards,<br>\n <strong>Customer Service Team</strong><br>\n Email: support@company.com<br>\n Phone: +1 (555) 123-4567</p>\n </div>\n </div>\n \n <div class=\"footer\">\n <p>This is an automated notification. Please do not reply to this email.</p>\n <p>© 2024 Your Company Name. All rights reserved.</p>\n </div>\n </div>\n</body>\n</html>`;\n}\n\n// Return the professional email HTML\nreturn [{ \n json: {\n html: htmlOutput,\n htmlContent: htmlOutput,\n itemCount: $input.all().length,\n emailSubject: \"New Customer Inquiry - Action Required\"\n }\n}];"
},
"typeVersion": 2
},
{
"id": "6a89013b-35e3-440b-aad2-14b6c9d693ad",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-848,
320
],
"parameters": {
"height": 256,
"content": "🎯 **步骤 1:表单捕获**"
},
"typeVersion": 1
},
{
"id": "cbed5a83-dbff-4c41-ad1b-ec06102acb76",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
336
],
"parameters": {
"height": 224,
"content": "📊 **步骤 2:数据记录**"
},
"typeVersion": 1
},
{
"id": "5c451fdb-d1c9-4315-bc77-4aa4bcbba11c",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
608
],
"parameters": {
"height": 256,
"content": "✅ **步骤 3:邮箱验证**"
},
"typeVersion": 1
},
{
"id": "a89bd006-d4a5-4980-bef9-a34e5a9b2ab9",
"name": "便签说明4",
"type": "n8n-nodes-base.stickyNote",
"position": [
32,
176
],
"parameters": {
"height": 296,
"content": "🎨 **步骤 4:邮件模板**"
},
"typeVersion": 1
},
{
"id": "905fb062-da89-4c8c-9ffc-9ccc8b3a323d",
"name": "便签说明5",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
208
],
"parameters": {
"height": 240,
"content": "📧 **步骤 5:发送邮件**"
},
"typeVersion": 1
},
{
"id": "22f3915e-ceff-4489-9c43-8b6e814e6155",
"name": "便签 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-288,
976
],
"parameters": {
"height": 252,
"content": "⚠️ **错误处理程序**"
},
"typeVersion": 1
},
{
"id": "fe9be2b3-c57f-4fec-a525-5f067f72b0ca",
"name": "在表格中追加或更新行",
"type": "n8n-nodes-base.googleSheets",
"position": [
832,
672
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "Task ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Task ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Task Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Task Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status Color",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status Color",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Priority",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Priority",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Created",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Created",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Updated",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Updated",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Closed",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Closed",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Done",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Done",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Due Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Due Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Start Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Creator",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Creator",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Creator Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Creator Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Assignees",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Assignees",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Watchers",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Watchers",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "List Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "List Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "List ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "List ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Project Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Project Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Project ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Project ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Folder Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Folder Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Space ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Space ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Team ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Team ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Points",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Points",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Time Estimate (Hours)",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Time Estimate (Hours)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Time Spent (Hours)",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Time Spent (Hours)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Order Index",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Order Index",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Archived",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Archived",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tags",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Custom Fields",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Custom Fields",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Has Dependencies",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Has Dependencies",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Has Linked Tasks",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Has Linked Tasks",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Has Checklists",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Has Checklists",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Task URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Task URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Public Sharing",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Public Sharing",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Permission Level",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Permission Level",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Data Processed At",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Data Processed At",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Processing Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Processing Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_aMeJ3avtD48dLkQxmgTtjDgbvhWp8a5v5wzgzIDd3o/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1_aMeJ3avtD48dLkQxmgTtjDgbvhWp8a5v5wzgzIDd3o",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_aMeJ3avtD48dLkQxmgTtjDgbvhWp8a5v5wzgzIDd3o/edit?usp=drivesdk",
"cachedResultName": "TypeForm Form Data"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4.6
},
{
"id": "d7875033-c362-4d0e-9fb2-9c62d866dabe",
"name": "Azure OpenAI聊天模型1",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
256,
1120
],
"parameters": {
"model": "gpt-4o",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"id": "C3WzT18XqF8OdVM6",
"name": "Azure Open AI account"
}
},
"typeVersion": 1
},
{
"id": "4868a1af-06d1-4fe0-aa3f-9f1dca28163b",
"name": "简单记忆1",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
400,
1136
],
"parameters": {
"sessionKey": "\"json_review\"",
"sessionIdType": "customKey",
"contextWindowLength": 7
},
"typeVersion": 1.3
},
{
"id": "031c5052-83c7-43ee-87d8-e9be9b23fd11",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
288,
896
],
"parameters": {
"text": "={{ $json[\"First name\"] }}{{ $json[\"Last name\"] }}{{ $json[\"Phone number\"] }}{{ $json.Email }}{{ $json.Company }}{{ $json[\"Which tutorial did you complete?\"] }}{{ $json[\"How would you rate the clarity of the tutorial content?\"] }}{{ $json[\"How helpful was the tutorial in improving your development skills?\"] }}{{ $json[\"What topics would you like to see covered in future tutorials?\"] }}{{ $json[\"Did you encounter any issues or difficulties while following the tutorial?\"] }}{{ $json[\"If yes, please describe the issues or difficulties you faced.\"] }}{{ $json[\"Any additional comments or suggestions to improve our tutorials?\"] }}{{ $json[\"Would you recommend these tutorials to other developers?\"] }}",
"options": {
"systemMessage": "=You are an AI assistant that processes raw form submissions from surveys or onboarding forms. \nYour job is to read all the answers and generate a structured, professional summary. \n\nRules:\n- Always produce output as clean JSON (no free text).\n- Keep \"summary\" concise (2–3 sentences).\n- In \"insights\", list key observations or potential issues as bullet points (max 5).\n- In \"callToAction\", give one short, actionable recommendation for the internal team.\n- If answers are irrelevant, empty, or missing, clearly state \"Not provided\" instead of skipping.\n- Do not repeat raw text verbatim; rephrase into professional insights.\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "0d20f7f1-6c5a-4608-a22b-4c24800e5af4",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
512,
1152
],
"parameters": {
"jsonSchemaExample": "{\n \"output\": {\n \"summary\": \"…\",\n \"insights\": [ \"…\", \"…\" ],\n \"callToAction\": \"…\"\n }\n}\n"
},
"typeVersion": 1.3
},
{
"id": "46b1e8b2-4f27-4f90-bc3f-f04b9023d416",
"name": "发送消息",
"type": "n8n-nodes-base.slack",
"position": [
640,
896
],
"webhookId": "16544571-1b96-4e02-80fb-eccd5d588aa8",
"parameters": {
"text": "=Summary: {{ $json.output.summary }} \n\nInsight: {{ $json.output.insights }} \n\nAction: {{ $json.output.callToAction }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09H21LK9BJ",
"cachedResultName": "reply-needed"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2.3
},
{
"id": "8ff6854e-2aa2-4ee4-92f1-6d2062e8430a",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
640
],
"parameters": {
"height": 240,
"content": "📌 **创建 ClickUp 任务**"
},
"typeVersion": 1
},
{
"id": "b2ceca60-90b7-4fd3-b813-e517c21b80e9",
"name": "便签 7",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
656
],
"parameters": {
"height": 240,
"content": "📊 **保存任务数据**"
},
"typeVersion": 1
},
{
"id": "3428b6c8-7cdd-4cb5-80b9-4d2cdcdcb8f7",
"name": "## 为什么选择 4o 模型?👆",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
928
],
"parameters": {
"height": 272,
"content": "🤖 **AI 摘要生成器**"
},
"typeVersion": 1
},
{
"id": "8b837ce3-bad7-4746-853e-bf4e8a3da588",
"name": "便签 9",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
624
],
"parameters": {
"height": 256,
"content": "🛠️ **格式化 ClickUp 数据**"
},
"typeVersion": 1
},
{
"id": "52bd38b8-6b2a-453c-8c37-b0b2dc8c3119",
"name": "便签10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
1248
],
"parameters": {
"height": 224,
"content": "🧠 **语言模型**"
},
"typeVersion": 1
},
{
"id": "33dedf53-430f-477c-8baa-fbe014630da2",
"name": "便签11",
"type": "n8n-nodes-base.stickyNote",
"position": [
288,
1296
],
"parameters": {
"height": 224,
"content": "🗂️ **对话记忆**"
},
"typeVersion": 1
},
{
"id": "34eafdd1-7527-46ab-8ac3-4992887b92d8",
"name": "便签12",
"type": "n8n-nodes-base.stickyNote",
"position": [
576,
1248
],
"parameters": {
"height": 224,
"content": "📦 **结构化解析器**"
},
"typeVersion": 1
},
{
"id": "f43e42ee-3424-4745-a405-edbf37bedcc6",
"name": "便签13",
"type": "n8n-nodes-base.stickyNote",
"position": [
768,
976
],
"parameters": {
"height": 224,
"content": "💬 **Slack 通知**"
},
"typeVersion": 1
},
{
"id": "351fd454-e8eb-450c-b6fe-f0ab1fa68962",
"name": "为表格格式化客户数据",
"type": "n8n-nodes-base.code",
"position": [
560,
656
],
"parameters": {
"jsCode": "// ClickUp Data Formatter for Google Sheets\n// This code formats ClickUp task data into a structured format for spreadsheet logging\n\nconst inputData = $input.all();\nconst formattedData = [];\n\nfor (const item of inputData) {\n const taskData = item.json;\n \n // Format dates for better readability\n const formatDate = (timestamp) => {\n if (!timestamp) return '';\n return new Date(parseInt(timestamp)).toLocaleString('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n timeZone: 'UTC'\n });\n };\n \n // Extract assignee names\n const getAssignees = (assignees) => {\n if (!assignees || assignees.length === 0) return 'Unassigned';\n return assignees.map(assignee => assignee.username).join(', ');\n };\n \n // Extract watcher names\n const getWatchers = (watchers) => {\n if (!watchers || watchers.length === 0) return '';\n return watchers.map(watcher => watcher.username).join(', ');\n };\n \n // Extract tags\n const getTags = (tags) => {\n if (!tags || tags.length === 0) return '';\n return tags.map(tag => tag.name).join(', ');\n };\n \n // Extract custom fields\n const getCustomFields = (customFields) => {\n if (!customFields || customFields.length === 0) return '';\n return customFields.map(field => `${field.name}: ${field.value}`).join(' | ');\n };\n \n // Format priority\n const getPriority = (priority) => {\n if (!priority) return 'None';\n return priority.priority || 'None';\n };\n \n // Calculate time estimates and spent in hours\n const formatTime = (timeInMs) => {\n if (!timeInMs || timeInMs === 0) return '0';\n return (timeInMs / (1000 * 60 * 60)).toFixed(2); // Convert to hours\n };\n \n // Format the data for Google Sheets\n const formattedItem = {\n // Basic Task Information\n 'Task ID': taskData.id || '',\n 'Task Name': taskData.name || '',\n 'Description': taskData.description || taskData.text_content || '',\n 'Status': taskData.status?.status || '',\n 'Status Color': taskData.status?.color || '',\n 'Priority': getPriority(taskData.priority),\n \n // Dates\n 'Date Created': formatDate(taskData.date_created),\n 'Date Updated': formatDate(taskData.date_updated),\n 'Date Closed': formatDate(taskData.date_closed),\n 'Date Done': formatDate(taskData.date_done),\n 'Due Date': formatDate(taskData.due_date),\n 'Start Date': formatDate(taskData.start_date),\n \n // People\n 'Creator': taskData.creator?.username || '',\n 'Creator Email': taskData.creator?.email || '',\n 'Assignees': getAssignees(taskData.assignees),\n 'Watchers': getWatchers(taskData.watchers),\n \n // Organization\n 'List Name': taskData.list?.name || '',\n 'List ID': taskData.list?.id || '',\n 'Project Name': taskData.project?.name || '',\n 'Project ID': taskData.project?.id || '',\n 'Folder Name': taskData.folder?.name || '',\n 'Space ID': taskData.space?.id || '',\n 'Team ID': taskData.team_id || '',\n \n // Task Details\n 'Points': taskData.points || 0,\n 'Time Estimate (Hours)': formatTime(taskData.time_estimate),\n 'Time Spent (Hours)': formatTime(taskData.time_spent),\n 'Order Index': taskData.orderindex || '',\n 'Archived': taskData.archived ? 'Yes' : 'No',\n \n // Additional Information\n 'Tags': getTags(taskData.tags),\n 'Custom Fields': getCustomFields(taskData.custom_fields),\n 'Has Dependencies': taskData.dependencies && taskData.dependencies.length > 0 ? 'Yes' : 'No',\n 'Has Linked Tasks': taskData.linked_tasks && taskData.linked_tasks.length > 0 ? 'Yes' : 'No',\n 'Has Checklists': taskData.checklists && taskData.checklists.length > 0 ? 'Yes' : 'No',\n \n // URLs and Sharing\n 'Task URL': taskData.url || '',\n 'Public Sharing': taskData.sharing?.public ? 'Yes' : 'No',\n 'Permission Level': taskData.permission_level || '',\n \n // Metadata\n 'Data Processed At': new Date().toISOString(),\n 'Processing Status': 'Success'\n };\n \n formattedData.push({\n json: formattedItem,\n pairedItem: item.pairedItem\n });\n}\n\n// Return the formatted data\nreturn formattedData;"
},
"typeVersion": 2
},
{
"id": "ad96b89c-c380-44d6-a0ad-6a4504e79b35",
"name": "创建 ClickUp 入职任务",
"type": "n8n-nodes-base.clickUp",
"position": [
320,
656
],
"parameters": {
"list": "901411336526",
"name": "={{ $('Log to Google Sheets').item.json[\"Which tutorial did you complete?\"] }}",
"team": "9014871666",
"space": "90143681766",
"folderless": true,
"additionalFields": {
"assignees": "={{ $('Log to Google Sheets').item.json[\"First name\"] }}"
}
},
"credentials": {
"clickUpApi": {
"id": "gDQJASsbW56RbLoy",
"name": "ClickUp account vivek"
}
},
"typeVersion": 1
},
{
"id": "3f90bc74-ed0d-42f7-9761-644ee7cf7185",
"name": "处理缺失邮箱并记录错误",
"type": "n8n-nodes-base.function",
"position": [
-96,
816
],
"parameters": {},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "3e2c977e-4bfb-48da-bc5b-6248e2d719e4",
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory1": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Typeform Trigger": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Check Email Exists": {
"main": [
[
{
"node": "Generate Professional Email HTML",
"type": "main",
"index": 0
},
{
"node": "Create ClickUp Onboarding Task",
"type": "main",
"index": 0
},
{
"node": "AI Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Handle Missing Email and log error",
"type": "main",
"index": 0
}
]
]
},
"Log to Google Sheets": {
"main": [
[
{
"node": "Check Email Exists",
"type": "main",
"index": 0
}
]
]
},
"Azure OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Create ClickUp Onboarding Task": {
"main": [
[
{
"node": "Format Customer Data for Sheets",
"type": "main",
"index": 0
}
]
]
},
"Format Customer Data for Sheets": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Generate Professional Email HTML": {
"main": [
[
{
"node": "Send Welcome Email",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用 Azure OpenAI 和 Google Workspace 自动化 DEI 资格筛选
使用Azure GPT-4o、Google云端硬盘和表格自动进行DEI资格筛选
If
Code
Gmail
+9
19 节点Rahul Joshi
内容创作
从Google Drive生成n8n模板描述
使用Azure GPT-4从Google Drive生成模板描述
Code
Gmail
Google Drive
+9
27 节点Rahul Joshi
内容创作
发布说明转常见问题存根(Jira/ClickUp)
使用GPT-4o从ClickUp自动生成发布说明到Notion和Slack
If
Code
Gmail
+8
20 节点Rahul Joshi
工程
潜在客户意图分类与自动任务创建器
使用 Azure GPT-4 从 Google Sheets 到 ClickUp 自动进行潜在客户意图分类
Set
Switch
Click Up
+9
32 节点Rahul Joshi
内容创作
人员流失风险预警工作流(Azure OpenAI + n8n)
员工流失风险检测与HR提醒,使用Azure OpenAI GPT-4o-mini和Gmail
If
Code
Gmail
+7
16 节点Rahul Joshi
内容创作
使用GPT-4自动化从ClickUp到Slack和Gmail的每日晨报生成
使用GPT-4o从ClickUp生成AI驱动的晨报并发送至Slack和Gmail
If
Code
Gmail
+9
27 节点Rahul Joshi
工作流信息
难度等级
高级
节点数量28
分类2
节点类型13
作者
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
外部链接
在 n8n.io 查看 →
分享此工作流