动态发送外出/休假消息
中级
这是一个Personal Productivity领域的自动化工作流,包含 14 个节点。主要使用 If, Code, Gmail, GmailTrigger, GoogleCalendar 等节点。 使用Gmail和Google Calendar动态发送外出/休假消息
前置要求
- •Google 账号和 Gmail API 凭证
分类
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "d6e2f2f655b1125bbcac14a4cac6d2e46c7a150e927f85fc96fdca1a6dc39e0e",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "6f15bcff-5358-4f9a-914d-dfd1e87c6e6f",
"name": "Find Return-to-Office Date",
"type": "n8n-nodes-base.googleCalendar",
"position": [
860,
0
],
"parameters": {
"limit": 1,
"options": {
"orderBy": "startTime"
},
"timeMax": "={{ $now.plus({ week: 2 }) }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "d1ba7566bd33c38760d89364501c748a2c0d75f9bdca2b77e1565b7a93fe146a@group.calendar.google.com",
"cachedResultName": "General Manager"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "hpuoiTdX3AdioCk5",
"name": "Rosh's Personal Calendar Account"
}
},
"typeVersion": 1.3
},
{
"id": "f922f416-5c9e-4053-8612-30d0aa5f92b2",
"name": "Nicely Format Return Date",
"type": "n8n-nodes-base.code",
"position": [
1120,
0
],
"parameters": {
"jsCode": "const dateTime = $input.first().json.start.dateTime;\nconst timeZone = $input.first().json.start.timeZone;\n\nconst date = new Date(dateTime);\n\nconst returnDate = new Intl.DateTimeFormat(undefined, {\n timeZone,\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n}).format(date);\n\nreturn [{ json: { returnDate } }];\n"
},
"typeVersion": 2
},
{
"id": "4585b157-5413-40a6-b661-5836aa1c5717",
"name": "Send Out of Office Message",
"type": "n8n-nodes-base.gmail",
"position": [
1380,
0
],
"webhookId": "ecf81e7d-0ed2-425b-9219-42e25657353d",
"parameters": {
"sendTo": "={{ $('Receive an Email in Gmail').item.json.From }}",
"message": "=Hello, \n\nThanks for your message!\n\nI am currently out of the office, and I will be returning on {{ $json.returnDate }}.\n\nBest, \n[User Name]",
"options": {
"appendAttribution": true
},
"subject": "Out of Office / Vacation Responder",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "x5LsvRUYpInxYmcG",
"name": "Rosh's Personal Email"
}
},
"typeVersion": 2.1
},
{
"id": "2a758f6b-981b-42e8-8b6d-65c28d67d3af",
"name": "Receive an Email in Gmail",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
80,
0
],
"parameters": {
"filters": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "x5LsvRUYpInxYmcG",
"name": "Rosh's Personal Email"
}
},
"typeVersion": 1.2
},
{
"id": "8b0b39a3-2109-4d3f-adb9-016b3aac1712",
"name": "Check Calendar for Upcoming Work Events",
"type": "n8n-nodes-base.googleCalendar",
"position": [
360,
0
],
"parameters": {
"limit": 1,
"options": {
"orderBy": "startTime"
},
"timeMax": "={{ $now.plus(1, 'days').format('yyyy-MM-dd') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "d1ba7566bd33c38760d89364501c748a2c0d75f9bdca2b77e1565b7a93fe146a@group.calendar.google.com",
"cachedResultName": "General Manager"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "hpuoiTdX3AdioCk5",
"name": "Rosh's Personal Calendar Account"
}
},
"executeOnce": true,
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "747f8201-60ce-401d-83da-ab2d8867dbca",
"name": "Any Upcoming Events Today?",
"type": "n8n-nodes-base.if",
"position": [
600,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5b1567fc-439c-4924-9290-0bcbb0be9b06",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.summary }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "26b69ab5-7004-4c1c-b6bd-8d332ed26a34",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-600,
-380
],
"parameters": {
"width": 580,
"height": 580,
"content": "## What it Does\nAutomatically checks your Google Calendar to determine if you're officially off work for the rest of today. If so, it auto-sends a personalized out‑of‑office reply via Gmail, telling senders when you’ll be back, based on your next calendar event within the next 2 weeks.\n\n## Prerequisites\nTo use this template, you'll need:\n- Gmail credentials (for the trigger and reply nodes)\n- Google Calendar credentials (for both calendar checks)\n- A dedicated work calendar selected in the Calendar nodes\n\n\n## Why It's Useful\nIdeal for freelancers, consultants, or remote workers who don’t follow a strict 9–5, yet want automated responses aligned with their actual availability, not a static setting. It’s dynamic, real-time, and easy to tweak.\n\n## Classification\nUse Case: Calendar-driven out-of-office automation\n\nRecommended audience: Business professionals, freelancers, remote employees\n\n"
},
"typeVersion": 1
},
{
"id": "74fbf32d-f2a9-4d14-a810-2be2c89160f8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-380
],
"parameters": {
"width": 760,
"height": 200,
"content": "\n## User Setup Instructions\n- Gmail Trigger: Connect your Gmail account and add any desired filters (labels, senders).\n- Google Calendar Nodes: Connect your calendar account and select your “work” calendar in both nodes.\n- Function Node: No changes needed unless you prefer a different date format.\n- Gmail Send Node: Edit the message template and toggle attribution as desired."
},
"typeVersion": 1
},
{
"id": "32209323-40fd-47a7-9fb0-2d44b19c87ed",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-160
],
"parameters": {
"color": 5,
"height": 360,
"content": "## Gmail Trigger\n- Monitors incoming emails every minute\n- Can be filtered (e.g., labels or VIP senders)"
},
"typeVersion": 1
},
{
"id": "4d571591-139a-41cf-96da-9fb92e27e2a1",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
280,
-160
],
"parameters": {
"color": 5,
"width": 500,
"height": 360,
"content": "## Calendar Check #1\n- Inspects if any events remain today"
},
"typeVersion": 1
},
{
"id": "222fbee1-ea2f-4399-a3ab-7146997d8033",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
-160
],
"parameters": {
"color": 5,
"height": 360,
"content": "## Calendar Check #2\n- If no remaining events, scans next 14 days for the next event"
},
"typeVersion": 1
},
{
"id": "aae2c7e1-cc62-45cd-9fcc-46b03b6bdd7f",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1060,
-160
],
"parameters": {
"color": 5,
"height": 360,
"content": "## Function Node\n- Formats the return date as Weekday, Month D, YYYY (e.g., “Thursday, July 24, 2025”)"
},
"typeVersion": 1
},
{
"id": "62c57e58-5f16-48e7-a532-d8b387a8f045",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
-160
],
"parameters": {
"color": 5,
"height": 360,
"content": "## Gmail Send\n- Sends a customized out‑of‑office email, using the formatted date\n- Optionally includes n8n attribution (editable)"
},
"typeVersion": 1
},
{
"id": "90c00754-61da-4326-90a0-ca90e6f6c483",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
220
],
"parameters": {
"width": 760,
"content": "\n## Customization Options\n- Edit the final email content and tone in the Send node\n- Adjust calendar lookahead in Calendar Check #2 (default is 14 days)\n- Add Gmail filters to restrict auto-replies (e.g. only specific senders or labels)"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"f922f416-5c9e-4053-8612-30d0aa5f92b2": {
"main": [
[
{
"node": "4585b157-5413-40a6-b661-5836aa1c5717",
"type": "main",
"index": 0
}
]
]
},
"2a758f6b-981b-42e8-8b6d-65c28d67d3af": {
"main": [
[
{
"node": "8b0b39a3-2109-4d3f-adb9-016b3aac1712",
"type": "main",
"index": 0
}
]
]
},
"747f8201-60ce-401d-83da-ab2d8867dbca": {
"main": [
[],
[
{
"node": "6f15bcff-5358-4f9a-914d-dfd1e87c6e6f",
"type": "main",
"index": 0
}
]
]
},
"6f15bcff-5358-4f9a-914d-dfd1e87c6e6f": {
"main": [
[
{
"node": "f922f416-5c9e-4053-8612-30d0aa5f92b2",
"type": "main",
"index": 0
}
]
]
},
"8b0b39a3-2109-4d3f-adb9-016b3aac1712": {
"main": [
[
{
"node": "747f8201-60ce-401d-83da-ab2d8867dbca",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 个人效率
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
AI工时表生成器 - 集成Gmail、日历和GitHub到Google表格
AI工时表生成器 - 集成Gmail、日历和GitHub到Google表格
If
Set
Code
+
If
Set
Code
31 节点Luka Zivkovic
个人效率
自动通过 Gmail 发送 Square 每日销售报告
自动通过 Gmail 发送 Square 每日销售报告
If
Code
Gmail
+
If
Code
Gmail
15 节点Rosh Ragel
客户关系管理
自动通过 Gmail 发送 Square 月度销售报告
自动通过 Gmail 发送 Square 月度销售报告
If
Code
Gmail
+
If
Code
Gmail
16 节点Rosh Ragel
内容创作
自动通过 Gmail 发送 Square 每周销售报告
自动通过 Gmail 发送 Square 每周销售报告
If
Code
Gmail
+
If
Code
Gmail
16 节点Rosh Ragel
客户关系管理
Gmail智能自动回复器,含GPT-4o和Google Drive上下文记忆
Gmail智能自动回复器,含GPT-4o和Google Drive上下文记忆
If
Set
Code
+
If
Set
Code
18 节点Usama Rehman
个人效率
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+
If
Ftp
Set
113 节点I versus AI
其他