N
n8n Store
Workflow Market
Automate Event Calendar Sync from Excel with GPT-4o-Mini-Powered Smart Summaries

Automate Event Calendar Sync from Excel with GPT-4o-Mini-Powered Smart Summaries

by cschin0 views

描述

分类

📊 Productivity🤖 AI & Machine Learning

使用的节点

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
价格免费
浏览量0
最后更新11/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
          }
        ]
      ]
    }
  }
}

相关工作流