自动将新Calendly预约添加到Google表格
初级
这是一个CRM, Multimodal AI领域的自动化工作流,包含 5 个节点。主要使用 Code, Webhook, GoogleSheets 等节点。 自动将新Calendly预约添加到Google表格
前置要求
- •HTTP Webhook 端点(n8n 会自动生成)
- •Google Sheets API 凭证
使用的节点 (5)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
},
"nodes": [
{
"id": "f99e1679-71a7-44f9-bdd5-948b9f25603d",
"name": "设置说明",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 280,
"height": 220,
"content": "📅 **需要设置:**"
},
"typeVersion": 1
},
{
"id": "e43f2bf7-edc3-4112-912a-5ce1417fcf8c",
"name": "Calendly 预约 Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
0,
224
],
"webhookId": "calendly-booking-webhook",
"parameters": {
"path": "calendly-booking",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "92230608-50d3-4e5a-be13-f6a0318dabec",
"name": "标准化预约数据",
"type": "n8n-nodes-base.code",
"position": [
208,
224
],
"parameters": {
"jsCode": "// Normalize Calendly booking data\nconst webhookData = $input.first().json;\nconst payload = webhookData.payload || webhookData;\n\n// Handle different Calendly webhook structures\nconst event = payload.event || payload;\nconst invitee = event.invitee || event;\nconst eventType = event.event_type || event.event || {};\n\n// Extract meeting details\nconst startTime = new Date(event.start_time || event.scheduled_event?.start_time);\nconst endTime = new Date(event.end_time || event.scheduled_event?.end_time);\n\n// Parse custom form questions/answers\nconst questions = invitee.questions_and_responses || invitee.questions_and_answers || [];\nlet phone = '';\nlet notes = '';\n\n// Extract phone and notes from questions\nquestions.forEach(qa => {\n const question = (qa.question || '').toLowerCase();\n if (question.includes('phone') || question.includes('mobile')) {\n phone = qa.answer || qa.response || '';\n } else if (question.includes('note') || question.includes('comment') || question.includes('message')) {\n notes += (qa.answer || qa.response || '') + ' ';\n }\n});\n\nconst normalizedData = {\n name: invitee.name || 'Unknown',\n email: invitee.email || '',\n phone: phone.trim(),\n event_type: eventType.name || eventType.type || 'Meeting',\n date: startTime.toLocaleDateString(),\n time: `${startTime.toLocaleTimeString()} - ${endTime.toLocaleTimeString()}`,\n status: invitee.status || event.status || 'Scheduled',\n meeting_link: event.location?.join_url || event.join_url || '',\n notes: notes.trim(),\n duration: Math.round((endTime - startTime) / (1000 * 60)), // Duration in minutes\n timezone: invitee.timezone || event.timezone || 'UTC',\n booking_created: new Date().toISOString(),\n calendly_event_id: event.uuid || event.id || '',\n invitee_id: invitee.uuid || invitee.id || ''\n};\n\nconsole.log('Normalized Calendly booking:', {\n name: normalizedData.name,\n email: normalizedData.email,\n event_type: normalizedData.event_type,\n date: normalizedData.date,\n time: normalizedData.time\n});\n\nreturn {\n json: normalizedData\n};"
},
"typeVersion": 2
},
{
"id": "44827cf4-aa34-4df3-9a9f-63184fc1ee86",
"name": "保存预约到表格",
"type": "n8n-nodes-base.googleSheets",
"position": [
400,
224
],
"parameters": {
"options": {
"useAppend": true
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_SHEET_ID"
}
},
"typeVersion": 4
},
{
"id": "f3264f93-3929-4ae7-921a-b4df8d10ab01",
"name": "记录预约成功",
"type": "n8n-nodes-base.code",
"position": [
608,
224
],
"parameters": {
"jsCode": "// Optional: Send confirmation or notification\nconst booking = $input.first().json;\n\n// Log successful booking save\nconsole.log(`✅ Successfully saved booking for ${booking.name}`);\nconsole.log(`📅 Event: ${booking.event_type}`);\nconsole.log(`📧 Email: ${booking.email}`);\nconsole.log(`🕒 Time: ${booking.date} at ${booking.time}`);\n\n// You could extend this to send confirmation emails,\n// Slack notifications, or other integrations\n\nconst summary = {\n success: true,\n booking_summary: `New ${booking.event_type} booking for ${booking.name} on ${booking.date}`,\n next_actions: [\n 'Booking saved to Google Sheets',\n 'Consider sending confirmation email',\n 'Add to calendar if needed'\n ]\n};\n\nreturn {\n json: summary\n};"
},
"typeVersion": 2
}
],
"pinData": {},
"connections": {
"Normalize Booking Data": {
"main": [
[
{
"node": "Save Booking to Sheets",
"type": "main",
"index": 0
}
]
]
},
"Save Booking to Sheets": {
"main": [
[
{
"node": "Log Booking Success",
"type": "main",
"index": 0
}
]
]
},
"Calendly Booking Webhook": {
"main": [
[
{
"node": "Normalize Booking Data",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
初级 - 客户关系管理, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
为Zoom参会者自动创建Airtable CRM记录
为Zoom参会者自动创建Airtable CRM记录
Code
Webhook
Airtable
+1
4 节点David Olusola
客户关系管理
自动保存Instagram潜在客户到Google表格
自动保存Instagram潜在客户到Google表格
Code
Webhook
Google Sheets
+1
4 节点David Olusola
潜在客户开发
清理和标准化 CSV 上传以导入 Google Sheets 和 Drive
清理和标准化 CSV 上传以导入 Google Sheets 和 Drive
Code
Webhook
Google Drive
+2
10 节点David Olusola
文档提取
自动保存Zoom录制到Google云端硬盘并在Airtable记录会议
自动保存Zoom录制到Google云端硬盘并在Airtable记录会议
Code
Webhook
Airtable
+3
7 节点David Olusola
文件管理
使用Stripe支付触发器和Gmail自动发送PDF发票
使用Stripe支付触发器和Gmail自动发送PDF发票
Code
Gmail
Webhook
+1
5 节点David Olusola
发票处理
使用GPT-4自动总结Zoom录制并发送到Slack和邮件
使用GPT-4自动总结Zoom录制并发送到Slack和邮件
Code
Gmail
Slack
+3
6 节点David Olusola
AI 摘要总结
工作流信息
难度等级
初级
节点数量5
分类2
节点类型4
作者
David Olusola
@dae221I help ambitious businesses eliminate operational bottlenecks and scale faster with AI automation. My clients typically see 40-60% efficiency gains within 90 days. Currently accepting 3 new projects this quarter - david@daexai.com
外部链接
在 n8n.io 查看 →
分享此工作流