A step-by-step demo that shows how to pull your Outlook calendar events for the week and ask GPT-4o to write a short summary.
Along the way you’ll practice basic data-transform nodes (Code, Filter, Aggregate) and see where to attach the required API credentials.
Why | Lets you click “Execute” in the n8n editor so you can test each change. |
---|
Microsoft Outlook → Event → Get All
subject
, start
Teaching moment: Outlook returns a full
dateTime
string. We’ll normalize it next so it’s easy to filter.
// Code node contents
return $input.all().map(item => {
const startDateTime = new Date(item.json.start.dateTime);
const formattedDate = startDateTime.toISOString().split('T')[0]; // YYYY-MM-DD
return { json: { ...item.json, startDateFormatted: formattedDate } };
});
### 4️⃣ Filter the Events Down to *This* Week
After we’ve normalised the `start` date-time into a simple `YYYY-MM-DD` string, we drop in a **Filter** node.
Add one rule for every day you want to keep—for example `2025-08-07` **or** `2025-08-08`. Rows that match any of those dates will continue through the workflow; everything else is quietly discarded.
*Why we’re doing this:* we only want to summarise tomorrow’s and the following day’s meetings, not the entire calendar.
---
### 5️⃣ Roll All Subjects Into a Single Item
Next comes an **Aggregate** node. Tell it to aggregate the `subject` field and choose the option *“Only aggregated fields.”*
The result is one clean item whose `subject` property is now a tidy list of every meeting title. It’s far easier (and cheaper) to pass one prompt to GPT than dozens of small ones.
---
### 6️⃣ Turn That List Into Plain Text
Insert a small **Code** node right after the aggregation:
```js
return [{
json: {
text: items
.map(item => JSON.stringify(item.json))
.join('\n')
}
}];
Need a Hand?
I’m always happy to chat automation, n8n, or Outlook API quirks.
Robert Breen – Automation Consultant & n8n Instructor
📧 [email protected] | LinkedIn