Calrows
If your team already blocks out its work in Google Calendar™, the timesheet is already there. It just isn't in rows yet. Here is how to turn a month of calendar events into hours, rates and totals in Google Sheets™.
People forget to fill in timesheets, but they don't forget to put meetings and work blocks in their calendar. Each event already has a start, an end and a title, usually with the client or project in it. All that's missing is a sheet that adds it up.
You get a new tab with one row per event (date, title, start, end, hours, rate, amount and description), a total row, and a By title summary with hours and amounts per event title. All-day events are left out, since a holiday or a deadline isn't billable time.
The free plan builds timesheets of up to 50 events at a time. Pro has no limit, and is a one-time payment that never renews.
If you'd rather do the maths yourself, use Import from Calendar: it writes every event in a date range as a row, with title, start, end, all-day, description, location, guests and colour.
You can write it yourself: CalendarApp.getCalendarById(id).getEvents(start, end) returns the events, and (event.getEndTime() - event.getStartTime()) / 3600000 gives hours. Remember to skip all-day events, round the hours, and page through long ranges, or a busy calendar will hit the six-minute execution limit.