onibaku.apps
Guide

How to make a timesheet from Google Calendar

If your work is already in Google Calendar, your timesheet is too. You just need to get the events into a spreadsheet, work out who each one was for, and add up the hours. This guide shows how to do that with plain Google Sheets formulas, and with an add-on that does it in one go.

Updated October 2026

Step 1: get the events into Google Sheets

You need a tab with one row per event and its hours. Our guide to exporting Google Calendar to Google Sheets has a free script that does this. It gives you columns A Date, B Start, C End, D Hours and E Event, which the formulas below assume.

Step 2: tag each event with a client

Make a tab called Clients with a client name, a word that appears in that client's event titles, and an hourly rate:

A ClientB KeywordC Rate
2Acmeacme90
3Bluebell Bakerybluebell70

Back on the events tab, put this in F2 and fill it down. It finds the first client whose keyword is in the event title:

=IFERROR(INDEX(FILTER(Clients!A$2:A, Clients!B$2:B<>"", REGEXMATCH(LOWER(E2), LOWER(Clients!B$2:B))), 1), "No client")

Then the rate in G2 and the amount in H2:

=IFERROR(VLOOKUP(F2, Clients!A:C, 3, FALSE), 0)
=D2*G2

Keep keywords to plain words. Characters like ., ( and + mean something special to REGEXMATCH.

Step 3: round the hours (optional)

Lots of people bill in 15-minute steps. Swap the hours in column D for one of these, where 0.25 is a quarter of an hour:

=MROUND(D2, 0.25)    to the nearest 15 minutes
=CEILING(D2, 0.25)   always up to the next 15 minutes

Step 4: the per-client summary

On a new tab, this one formula gives hours and amount for each client, ready to copy into an invoice:

=QUERY(Events!A1:H, "select F, sum(D), sum(H) where F is not null group by F label sum(D) 'Hours', sum(H) 'Amount'", 1)

Replace Events with the name of your events tab. Because it's a formula, the totals update as soon as you fix a client or an hour on the events tab.

Where the formula approach falls down

The quick way: Calendar Timesheets & Billing

Calendar Timesheets & Billing is our add-on, and it does all four steps in one press of a button:

  1. Install it from the Google Workspace Marketplace.
  2. Choose Extensions → Calendar Timesheets & Billing → Open timesheet builder.
  3. Tick your calendars and pick the dates, add your clients and rates, and press Build timesheet.

It's free for one calendar, this month or last month, with clients, rates, rounding and the summary included. Pro is $5 a month or $39 a year for every calendar and any dates.

Get Calendar Timesheets & Billing

Common questions

How do I track billable hours in Google Calendar?

Put each piece of work in your calendar as an event, with the client's name in the title or the client as a guest. Then build the timesheet at the end of the week or month with either method above.

Can I have a different rate per client?

Yes. In the formula version, it's the Rate column on the Clients tab. In the add-on, each client has its own rate and anything unmatched uses the default rate.

What about meetings I declined?

The export script skips events you declined, and so does the add-on (you can turn that off). Events marked as "free" can be skipped too in the add-on's options.

Can it make invoices?

Not yet. The client summary has the hours and amounts to copy into your invoice. Invoice PDFs per client are next on the list. Email admin@onibaku.co.uk if you'd use them.