Daily
Catch double bookings before they happen
You're warned about overlapping meetings in the coming week while there's time to move one.
- Runs
- Daily
- Apps
- Google Calendar
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every morning at 7am, check my calendar for the next 7 days and email me any meetings that overlap, ignoring ones I've declined.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A busy operations director accepts invitations quickly from her phone, and on Thursday discovers a client call and a board prep session both on the calendar at 2 pm. Both organizers assumed she had confirmed. Google Calendar shows overlapping events side by side, but only if you happen to open that day. Without a check, conflicts are found when someone is already waiting on a video call. The cost is a rushed apology.
Each day, ClickRuntime lists your events for the coming week, skips any you declined, sorts them by start time and finds the pairs that overlap. It emails you the list of clashes with the titles and times, so you can resolve them ahead of time instead of on the day.
Executive assistants managing several calendars find it a useful safety net.
What you get out of it
Clashes are fixed days in advance
With notice, you can reschedule one meeting politely. Doing it at the last minute looks careless, but a day or two of warning looks like good planning. A gentle early note rarely upsets anyone.
Both organizers get answers sooner
Telling someone early that you cannot make it lets them find a replacement or move the meeting. Waiting silently and missing one is far more disruptive for everyone. Everyone planning around you benefits from earlier notice.
Less stress on busy weeks
You know whether the week ahead is feasible before it starts. That clarity makes it easier to say no or ask for a different slot while there are still options.
A safety net for assistants
Assistants managing executive calendars can scan one email for conflicts across the week. It catches the clashes created when several people book into the same executive's time independently. One email beats checking each calendar separately every morning.
Declined events do not create noise
Meetings you have already turned down are skipped, so the list holds only real conflicts. A short accurate list is much more likely to be read and acted on. That keeps the daily email worth opening.
How it works
What happens, step by step
Every day ClickRuntime reads your upcoming Google Calendar events, leaving out ones you have declined.
It sorts them by start time and checks which ones overlap.
If it finds any clashes, it emails you each pair of overlapping meetings with the time they collide.
Before it runs live
- Connect Google Calendar
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Google Calendar steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, notify
def declined(e):
return any(a.get("self") and a.get("responseStatus") == "declined" for a in e.get("attendees", []))
@on_trigger
def run(event):
cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
now = datetime.now(timezone.utc)
items = cal.events().list(calendarId="primary", timeMin=now.isoformat(), timeMax=(now + timedelta(days=7)).isoformat(),
singleEvents=True, orderBy="startTime").execute()["items"]
timed = [e for e in items if "dateTime" in e["start"] and not declined(e) and e.get("transparency") != "transparent"]
clashes = []
for i, a in enumerate(timed):
for b in timed[i + 1:]:
if b["start"]["dateTime"] >= a["end"]["dateTime"]:
break
clashes.append(f"{a['start']['dateTime'][:16]}: {a.get('summary')} overlaps {b.get('summary')}")
if clashes:
notify.email_me(f"{len(clashes)} overlapping meetings this week", "\n".join(clashes))
return {"overlaps": len(clashes)}FAQ
Common questions
Does it treat back-to-back meetings as overlaps?
Are all-day events and tentative invitations included?
Can it check more than one calendar at once?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Sync an outside calendar feed into Google Calendar
Events from a feed or another tool appear in your calendar and stay up to date as they change or get cancelled.
See how it worksSee who on your team is away this week
Each Monday you get a list of who is off and when, taken from your team's calendars.
See how it worksBlock focus time on busy days
On days full of meetings, a focus block is added to your first free gap.
See how it worksKeep exploring
Set up “Catch double bookings before they happen” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.