How to Retrieve Multiple Free Time Slots from Google Calendar via Telegram Workflow

Hello,
I would like to develop a workflow that allows me to call via Telegram and return one or more free 45-minute slots in my Google Calendar over a given period.
I can do this if I give it a slot between two dates/times, but I can’t get it to return all X free slots between two dates…
How do I do this?
Thanks Frédéric
(I’m French, sorry for my English :slight_smile:

My workflow :slight_smile:

Hello there! I hope you’re doing well!
I know it’s been a while but in case you did not find a solution yet, here’s my approach:

Here’s what it does:

1 - Gets the day passed by the trigger and converts it to the correct ISO format that google calendar uses. (Here the “-03:00” corresponds to my own timezone. Adapt it accordingly!)
I’m using 9 to 5, but you can change to whatever you wish.
2 - It calls the “freeBusy” google calendar endpoint to get all the currently unavailable spots - Also uses my timezone, so change to the one you’d like.
3 - Uses a code node to compare all the spots and get only the ones that are available.

You can create a new flow and ask the AI to call it when you need the free spots and you will get them :slight_smile:

1 Like

Are you currently using the Google Calendar node in n8n or making API calls directly?

You can try using Google Calendar’s Freebusy API with a loop.

  • Instead of asking for one slot, use the “Freebusy” endpoint to get all busy times between your two dates.
  • Then, write a small loop (or use a Function node) to scan through the period, checking where the calendar is free for at least 45 minutes.
  • Collect all those free slots and return them.
  • This way, you get all free slots, not just one.

You could also use multiple “Time Range” queries and combine results:

  • Split your total period into smaller chunks (like every day or every few hours).
  • For each chunk, query for free slots of 45 minutes.
  • Then aggregate these slots from each chunk into a full list to return.

Hope this helps. Cheers!

1 Like