
Automate Event Calendar Sync from Excel with GPT-4o-Mini-Powered Smart Summaries
Description
Categories
📊 Productivity🤖 AI & Machine Learning
Nodes Used
n8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.mergen8n-nodes-base.filtern8n-nodes-base.emailSendn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNote
PriceKostenlos
Views0
Last Updated11/28/2025
workflow.json
{
"id": "erj9VZBeJsCXdIsB",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
"templateCredsSetupCompleted": true
},
"name": "Automate Event Calendar Sync from Excel with GPT-4o-Mini-Powered Smart Summaries",
"tags": [],
"nodes": [
{
"id": "0f6ea127-37bf-4232-b115-8a2147e62562",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-2784,
-352
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "4ea9696c-5b24-4642-a406-76f842da7ab4",
"name": "Read Excel File",
"type": "n8n-nodes-base.spreadsheetFile",
"position": [
-2320,
-352
],
"parameters": {
"options": {}
},
"typeVersion": 2
},
{
"id": "6df965c6-b497-47ea-a7cd-79063f125983",
"name": "Google Drive - Download Excel",
"type": "n8n-nodes-base.googleDrive",
"position": [
-2480,
-352
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.fileId }}"
},
"options": {},
"operation": "download"
},
"typeVersion": 3
},
{
"id": "89473215-2fe1-41d1-a27b-d0b52d59b2a3",
"name": "Set Excel File ID",
"type": "n8n-nodes-base.set",
"position": [
-2640,
-352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "fileId",
"name": "fileId",
"type": "string",
"value": "YOUR_EXCEL_FILE_ID"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f81be40d-c060-4333-84b5-dec3702981f0",
"name": "Filter Valid Events",
"type": "n8n-nodes-base.filter",
"position": [
-2144,
-352
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "event_title_exists",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.title }}",
"rightValue": ""
},
{
"id": "start_date_exists",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.startDate }}",
"rightValue": ""
},
{
"id": "valid_date_format",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ new Date($json.startDate).toString() }}",
"rightValue": "Invalid Date"
}
]
}
},
"typeVersion": 2
},
{
"id": "f55e51ce-185b-47dc-9f00-7b0228e8654d",
"name": "Google Calendar - Create Event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
-1280,
-208
],
"parameters": {
"end": "={{ $json.endDate }}",
"start": "={{ $json.startDate }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "primary",
"cachedResultName": "Primary"
},
"additionalFields": {
"color": "={{ $json.urgency === 'high' ? '11' : ($json.urgency === 'medium' ? '5' : '1') }}",
"location": "={{ $json.location || '' }}",
"showMeAs": "busy",
"attendees": "={{ $json.attendees || '' }}",
"description": "={{ $json.description }}\n\n---\nAI Category: {{ $json.category }}\nTags: {{ $json.tags }}\nUrgency: {{ $json.urgency }}",
"repeatUntil": "",
"sendUpdates": "none",
"maxAttendees": 0,
"repeatHowManyTimes": 1
},
"useDefaultReminders": false
},
"typeVersion": 1.2
},
{
"id": "561f037c-2402-4e55-9458-cfc19ff776bf",
"name": "Send Email Summary",
"type": "n8n-nodes-base.emailSend",
"position": [
-368,
-208
],
"webhookId": "cda4480d-7d5c-427c-94e6-12deae1fde90",
"parameters": {
"html": "={{ $json.emailBody }}",
"options": {},
"subject": "={{ $json.emailSubject }}",
"toEmail": "[email protected]",
"fromEmail": "[email protected]"
},
"typeVersion": 2.1
},
{
"id": "93e37187-97e4-4250-afb1-6aec29ae661e",
"name": "AI - Analyze Event Context",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1984,
-224
],
"parameters": {
"text": "={{ $json.title }}\n{{ $json.description }}\n{{ $json.location }}",
"agent": "conversationalAgent",
"options": {
"systemMessage": "You are an intelligent calendar event analyzer. Extract and enhance event information:\n1. Categorize the event (meeting, appointment, deadline, social, etc.)\n2. Suggest optimal duration if not provided (return in hours, e.g., 1 or 0.5)\n3. Add smart tags based on content\n4. Detect urgency level (low/medium/high)\n5. Suggest reminder times\n\nReturn ONLY valid JSON:\n{\"category\":\"meeting\",\"suggestedDuration\":1,\"tags\":[\"work\",\"planning\"],\"urgency\":\"medium\",\"reminderMinutes\":30,\"enhancedDescription\":\"improved description\"}"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "53f163ec-9b94-4d4a-a2b8-10d97cfc3e5a",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2032,
-48
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "OGYj7DgYv5GFLFZk",
"name": "OpenAi account 2"
}
},
"typeVersion": 1
},
{
"id": "06b34d52-bf62-4478-8d70-e201cbb19297",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1824,
-48
],
"parameters": {
"jsonSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"category\": {\"type\": \"string\"},\n \"suggestedDuration\": {\"type\": \"number\"},\n \"tags\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n \"urgency\": {\"type\": \"string\"},\n \"reminderMinutes\": {\"type\": \"number\"},\n \"enhancedDescription\": {\"type\": \"string\"}\n }\n}"
},
"typeVersion": 1
},
{
"id": "ce58f968-33a0-4e6c-bb43-8c45f997aabd",
"name": "Merge AI Insights",
"type": "n8n-nodes-base.merge",
"position": [
-1632,
-96
],
"parameters": {
"mode": "combine",
"options": {}
},
"typeVersion": 3
},
{
"id": "e6484d5c-c814-43f7-9f14-f61b68ebe4b9",
"name": "AI - Generate Smart Summary",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-784,
-208
],
"parameters": {
"text": "Events created:\n{{ $json.aggregatedEvents }}\n\nTotal: {{ $json.totalEvents }}\nTimestamp: {{ $json.syncTimestamp }}",
"options": {
"systemMessage": "You are an executive assistant. Create a professional, concise email summary of calendar events. Include:\n1. Executive summary (2-3 sentences)\n2. Breakdown by category\n3. Urgency highlights\n4. Suggested preparations\n5. Next sync information\n\nUse HTML formatting for email readability."
},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "f1f696b4-8d0d-495c-b577-090e2a2c7a42",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-704,
16
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "5b46d55e-866d-4f07-97e5-593f9247fbd1",
"name": "Enrich Event Data",
"type": "n8n-nodes-base.set",
"position": [
-1472,
-96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "enhanced_title",
"name": "title",
"type": "string",
"value": "={{ $json.title }}"
},
{
"id": "ai_category",
"name": "category",
"type": "string",
"value": "={{ $('AI - Analyze Event Context').item.json.category }}"
},
{
"id": "ai_tags",
"name": "tags",
"type": "string",
"value": "={{ $('AI - Analyze Event Context').item.json.tags.join(', ') }}"
},
{
"id": "enhanced_description",
"name": "description",
"type": "string",
"value": "={{ $('AI - Analyze Event Context').item.json.enhancedDescription || $json.description }}"
},
{
"id": "urgency",
"name": "urgency",
"type": "string",
"value": "={{ $('AI - Analyze Event Context').item.json.urgency }}"
},
{
"id": "calculated_end",
"name": "endDate",
"type": "string",
"value": "={{ $json.endDate || new Date(new Date($json.startDate).getTime() + ($('AI - Analyze Event Context').item.json.suggestedDuration * 3600000)).toISOString() }}"
},
{
"id": "reminder_minutes",
"name": "reminderMinutes",
"type": "number",
"value": "={{ $('AI - Analyze Event Context').item.json.reminderMinutes }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "36a9bb8e-d171-4e59-89ae-205e14b8ce4d",
"name": "Update Calendar Event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
-1104,
-208
],
"parameters": {
"eventId": "={{ $json.id }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "primary",
"cachedResultName": "Primary"
},
"operation": "update",
"updateFields": {
"description": "={{ $json.description }}\n\n---\nAI Insights:\nCategory: {{ $json.category }}\nUrgency: {{ $json.urgency }}\nTags: {{ $json.tags }}"
}
},
"typeVersion": 1.2
},
{
"id": "dbec3dc3-12ea-41d6-9515-e0616a41cc5a",
"name": "Prepare AI Summary Data",
"type": "n8n-nodes-base.set",
"position": [
-928,
-208
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "total_events",
"name": "totalEvents",
"type": "number",
"value": "={{ $input.all().length }}"
},
{
"id": "aggregated_events",
"name": "aggregatedEvents",
"type": "string",
"value": "={{ $input.all().map(item => `${item.json.summary} | ${item.json.category || 'Uncategorized'} | ${item.json.urgency || 'Normal'} | ${new Date(item.json.start.dateTime || item.json.start.date).toLocaleDateString()}`).join('\\n') }}"
},
{
"id": "sync_time",
"name": "syncTimestamp",
"type": "string",
"value": "={{ new Date().toLocaleString() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5d55e282-1fff-491c-9576-a840d8f83e45",
"name": "Format AI Email",
"type": "n8n-nodes-base.set",
"position": [
-528,
-208
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "email_body",
"name": "emailBody",
"type": "string",
"value": "={{ $json.output }}"
},
{
"id": "email_subject",
"name": "emailSubject",
"type": "string",
"value": "📅 AI-Enhanced Calendar Sync - {{ $('Prepare AI Summary Data').item.json.syncTimestamp }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4b2eb9fd-21d2-4e49-9c0d-bce61fab9baa",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3232,
-624
],
"parameters": {
"width": 1904,
"height": 736,
"content": "## **Introduction**\nAutomatically imports Excel schedules from Google Drive, validates data with AI, syncs to Google Calendar, \nand emails smart summaries. Ideal for educators, managers, and administrators handling recurring academic\nor project schedules.\n## **How It Works**\nTrigger → Download Excel → Filter events → Dual AI analysis (OpenAI + Parser) → Merge insights \n→ Enrich data → Create/Update Google Calendar events → Generate and email AI summary.\n## **Workflow Template**\nTrigger → Download Excel → Filter Events → AI Analysis → Merge Insights → Enrich Data \n→ Create/Update Calendar → AI Summary → Email Report\n## **Workflow Steps**\n1. **Trigger**: Runs on schedule to detect new files.\n2. **Read Excel**: Converts spreadsheet data to JSON.\n3. **Filter Events**: Removes invalid entries.\n4. **AI Context Analysis**: Understands event links and conflicts.\n5. **Structured Parser**: Formats AI output for consistency.\n6. **Merge Insights**: Combines multi-AI results.\n7. **Enrich Data**: Prepares Google Calendar-ready events.\n8. **Calendar Actions**: Creates or updates events.\n9. **AI Summary**: Generates executive overview.\n10. **Email Delivery**: Sends formatted summary report.\n## **Setup**\n1. **Google Drive**: Connect OAuth2 → get file ID.\n2. **Calendar**: Enable API → authorize in n8n.\n3. **OpenAI**: Add API key → select GPT model.\n4. **Email (Gmail/SMTP)**: Configure sender and recipients.\n5. **Trigger**: Set timezone and frequency.\n6. **Excel Format**: Include Name, Date, Time, Location, Staff, etc.\n"
},
"typeVersion": 1
},
{
"id": "22ceba2a-6fbd-4677-b335-03d3d0cfb9c2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1312,
-624
],
"parameters": {
"color": 5,
"width": 512,
"height": 368,
"content": "## **Use Cases**\n* **Education:** Sync course schedules and exams.\n* **Projects:** Import milestones, update team calendars.\n* **Events:** Manage venue bookings and notifications.\n* **HR:** Automate interviews, onboarding, and training.\n* **Healthcare:** Schedule shifts, appointments, maintenance.\n## **Customization**\n* Replace OpenAI with Claude, LLaMA, or Azure.\n* Route events to multiple calendars.\n* Filter by type, date, or priority.\n## **Benefits**\n* **Time Savings:** Cuts 5–10 hrs/week of manual work.\n* **Accuracy:** 95% fewer scheduling errors."
},
"typeVersion": 1
},
{
"id": "23b97c18-a4be-46fb-a7b0-60d1ec20b3f9",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
-624
],
"parameters": {
"color": 6,
"width": 336,
"height": 224,
"content": "## **Prerequisites**\n* Google Workspace with Drive & Calendar\n* OpenAI API key\n* Gmail/SMTP setup\n* Standardized Excel schedule\n* n8n instance v1.0+\n* Basic OAuth2 setup"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "5b4aeb05-14da-43be-94f7-e2e8a87312c2",
"connections": {
"Format AI Email": {
"main": [
[
{
"node": "Send Email Summary",
"type": "main",
"index": 0
}
]
]
},
"Read Excel File": {
"main": [
[
{
"node": "Filter Valid Events",
"type": "main",
"index": 0
}
]
]
},
"Aggregate Events": {
"main": [
[
{
"node": "Prepare Email Summary",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Set Excel File ID",
"type": "main",
"index": 0
}
]
]
},
"Enrich Event Data": {
"main": [
[
{
"node": "Google Calendar - Create Event",
"type": "main",
"index": 0
}
]
]
},
"Merge AI Insights": {
"main": [
[
{
"node": "Enrich Event Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI - Analyze Event Context",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Excel File ID": {
"main": [
[
{
"node": "Google Drive - Download Excel",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "AI - Generate Smart Summary",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Filter Valid Events": {
"main": [
[
{
"node": "Google Calendar - Create Event",
"type": "main",
"index": 0
},
{
"node": "AI - Analyze Event Context",
"type": "main",
"index": 0
},
{
"node": "Merge AI Insights",
"type": "main",
"index": 1
}
]
]
},
"Prepare Email Summary": {
"main": [
[
{
"node": "Send Email Summary",
"type": "main",
"index": 0
}
]
]
},
"Update Calendar Event": {
"main": [
[
{
"node": "Prepare AI Summary Data",
"type": "main",
"index": 0
}
]
]
},
"Prepare AI Summary Data": {
"main": [
[
{
"node": "AI - Generate Smart Summary",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI - Analyze Event Context",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"AI - Analyze Event Context": {
"main": [
[
{
"node": "Merge AI Insights",
"type": "main",
"index": 0
}
]
]
},
"AI - Generate Smart Summary": {
"main": [
[
{
"node": "Format AI Email",
"type": "main",
"index": 0
}
]
]
},
"Google Drive - Download Excel": {
"main": [
[
{
"node": "Read Excel File",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar - Create Event": {
"main": [
[
{
"node": "Aggregate Events",
"type": "main",
"index": 0
},
{
"node": "Update Calendar Event",
"type": "main",
"index": 0
}
]
]
}
}
}