Hey everyone, I’m running into trouble with n8n’s Google Calendar node. I’ve got a calendar that’s been shared with my service account ([email protected]) with Make changes AND manage sharing rights. I need a workflow that:
- Fetches an event via Get Events
- Builds an updated attendees array in a Code node, for example:
const existing = item.json.attendees || ; if (!existing.some(a => a.email === ‘[email protected]’)) { existing.push({ email: ‘[email protected]’ }); } return { json: { …item.json, attendees: existing } }; - Calls the Google Calendar → Update node with that new attendees array
No matter what I try—manual mapping, treat value as JSON, passing an array of { email: … } objects—the Update step always errors or wipes out all existing guests and only leaves the new one. I’m not using per-user OAuth flows; each therapist just shares their calendar with my single account.
What I’ve tried:
- Mapping {{ $json.attendees }} directly in the Attendees field with raw JSON
- Converting attendees to a comma-separated string or array of strings
- Splitting/joining strings—always “attendee.split is not a function” or the API rejects the remindersUI parameter
Question:
What’s the correct way in n8n to append an attendee object to a shared Google Calendar event’s attendees list without losing the existing ones? Any tips on node configuration, expressions, or JSON shape that actually works? Thanks!
