On a schedule
Add a Zoom link to every meeting that's missing one
Any meeting you organise without a video link gets a Zoom meeting added to it, so nobody asks 'where's the link?' at the start time.
- Runs
- On a schedule
- Apps
- Google Calendar, Zoom
- AI
- Not needed
- Access
- Calendar events write; Zoom meeting:write
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, look at my calendar for the next 7 days. For any meeting I organise with other attendees and no video link, create a Zoom meeting and add the link to the event.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A consultant books meetings from their phone between calls and often forgets to add a video link. Five minutes before the start, clients email asking how to join, and the meeting starts late while a link is pasted around.
Now every meeting they organise with guests is checked a few times an hour. If there's no video link, a Zoom meeting is created and its link is added to the event, so guests see it in their invitation well before the start.
What you get out of it
Every meeting is joinable
Guests always find a link in the invitation, without a last-minute email.
Book from anywhere
Create the event quickly on your phone; the link is added for you.
Leaves other links alone
Events that already have a Google Meet, Teams or Zoom link are not touched.
Only your meetings
Events other people organised are never edited.
How it works
What happens, step by step
Every 15 minutes, ClickRuntime looks at your calendar for the next week.
It picks out meetings you organise, with guests, that have no video link.
A Zoom meeting is created at the same time and its link is added to the event.
Each event is remembered, so it never gets a second Zoom meeting.
Before it runs live
- Connect Google Calendar
- Connect Zoom
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 and Zoom steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state
@on_trigger
def run(event):
cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
now = datetime.now(timezone.utc)
events = cal.events().list(calendarId="primary", timeMin=now.isoformat(), timeMax=(now + timedelta(days=7)).isoformat(),
singleEvents=True).execute().get("items", [])
done = state.get("done") or []
added = 0
for e in events:
text = f"{e.get('location', '')} {e.get('description', '')} {e.get('hangoutLink', '')}"
if e["id"] in done or not e.get("organizer", {}).get("self") or len(e.get("attendees", [])) < 2 \
or any(k in text for k in ("zoom.us", "meet.google", "teams.microsoft")):
continue
meeting = http.post("https://api.zoom.us/v2/users/me/meetings",
headers={"Authorization": f"Bearer {credentials.connection('zoom', 'work')}"},
json={"topic": e.get("summary", "Meeting"), "type": 2, "start_time": e["start"]["dateTime"]}).json()
cal.events().patch(calendarId="primary", eventId=e["id"],
body={"location": meeting["join_url"], "description": f"{e.get('description', '')}\nJoin Zoom: {meeting['join_url']}"}).execute()
done.append(e["id"])
added += 1
state.set("done", done[-500:])
return {"added": added}FAQ
Common questions
Which events get a link?
Do guests get notified of the change?
Will it create duplicate Zoom meetings?
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
Get summaries of yesterday's calendar meetings from Zoom
Every morning you get an email listing yesterday's calendar meetings, each with a summary and action items from its Zoom recording.
See how it worksBook form requests into your calendar with a Zoom link
Each meeting request from your form is checked against your calendar, booked with a Zoom link and an invite, and you're told about it.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Add a Zoom link to every meeting that's missing one” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.