Skip to content

Every 15 minutes

Keep a Google Sheet of every work calendar event

Your sheet always lists every event on your work calendar with its title, time, guests and status, and updates when events change.

Runs
Every 15 minutes
Apps
Google Calendar, Google Sheets
AI
Not needed
Access
Calendar read; Sheet edit

Send this to your assistant

Create a ClickRuntime automation: keep a Google Sheet updated with every event on my work calendar: title, time, attendees, and status.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A consultant bills clients by the hour and has to report how many meetings she held with each one. Her calendar has the facts, but getting them into a spreadsheet means exporting, cleaning and re-doing it every time something moves.

This automation keeps a live copy of her calendar in a Google Sheet, so she can filter, total and share meeting data whenever she needs it, and cancelled or moved meetings are already reflected.

What you get out of it

  • Meeting data you can work with

    A sheet can be filtered, totalled and charted in ways a calendar cannot, such as hours per client or meetings per week.

  • Always current

    New, moved and cancelled events are updated in the sheet, so reports never rely on an old export.

  • Easy to share

    An assistant, manager or accountant can see the sheet without access to your calendar itself.

  • A lasting record

    The sheet keeps a history of meetings, useful for timesheets, invoices and year-end reviews.

How it works

What happens, step by step

  1. Every 15 minutes ClickRuntime asks your Google Calendar for events that are new or changed since the last check.

  2. If nothing has changed, it stops there.

  3. For each changed event it finds the matching row in your sheet and updates it, or adds a new row if the event is new.

  4. Each row holds the title, start and end time, guests and status.

Before it runs live

  • Connect Google Calendar
  • Connect your Google Sheets account and pick the spreadsheets it may use

What you get

RunsEvery 15 minutes
Keep a Google Sheet of every work calendar eventtoday, 9:00Succeeded
Google Sheets · Events tabNorthwind quarterly review | Tue 4 Nov 10:00–11:00 | sam@northwind.example | confirmed

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

  • Act only on the items that match your own rules, and skip the rest
  • 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 Google Sheets steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
log_calendar_events_to_a_google_sheet.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, state, report_fetched

SHEET_ID = "your-spreadsheet-id"

@on_trigger
def run(event):
    creds = Credentials(credentials.connection("google", "work"))
    cal = build("calendar", "v3", credentials=creds, cache_discovery=False).events()
    token = state.get("sync_token")
    res = cal.list(calendarId="primary", syncToken=token, singleEvents=True).execute() if token else \
        cal.list(calendarId="primary", singleEvents=True, maxResults=2500).execute()
    items = res.get("items", [])
    report_fetched(len(items))
    if not items:
        return {"changed": 0}
    sheet = build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values()
    ids = [r[0] if r else "" for r in sheet.get(spreadsheetId=SHEET_ID, range="Events!A2:A").execute().get("values", [])]
    new_rows = []
    for e in items:
        row = [e["id"], e.get("summary", ""), e.get("start", {}).get("dateTime", ""), e.get("end", {}).get("dateTime", ""),
               ", ".join(a["email"] for a in e.get("attendees", [])), e.get("status", "")]
        if e["id"] in ids:
            n = ids.index(e["id"]) + 2
            sheet.update(spreadsheetId=SHEET_ID, range=f"Events!A{n}:F{n}", valueInputOption="RAW", body={"values": [row]}).execute()
        else:
            new_rows.append(row)
    if new_rows:
        sheet.append(spreadsheetId=SHEET_ID, range="Events!A:F", valueInputOption="RAW", body={"values": new_rows}).execute()
    state.set("sync_token", res.get("nextSyncToken"))
    return {"changed": len(items)}

FAQ

Common questions

What happens when a meeting is cancelled?
Its row stays in the sheet and the status changes to cancelled, so you keep a record without counting it as a held meeting.
Will moved meetings create duplicate rows?
No. Each event has one row, matched by the event's own ID, and the row is updated when the time or guests change.
Can I log more than one calendar?
Yes. Each calendar can go to its own tab or into one shared tab with a column showing which calendar the event came from.
What permissions does it need?
Calendar read; Sheet edit. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Keep a Google Sheet of every work calendar event” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.