domainwidedelegation.comStart free

Use cases → Scheduling

Reserve multiple calendar resources in bulk from a service account

Book several rooms or equipment at once using a delegated service account, ensuring consistent reservations across many resources.

Who it is forIT and facilities teams automating meeting room or asset bookings for large groups or events.
APIsCalendar API, Admin SDK
Typical scopescalendar, admin.directory.resource.calendar

The problem

Booking a dozen rooms or devices manually is slow and error-prone, especially when schedules change or require recurring updates. Doing this at scale requires automation, but the API’s behaviour around conflicts and propagation isn’t always clear.

How it works

  1. List all resource calendars using the Admin SDK, filtering for those available.
  2. For each target resource, impersonate the organiser and attempt to insert an event using the Calendar API.
  3. Track and handle responses for each booking, watching for conflicts or partial failures.
  4. Confirm all reservations and notify stakeholders, retrying only failed bookings with updated times if necessary.

What changes

Bulk reservations become repeatable and auditable, with clear feedback on which resources were booked and which failed.

The trap in this one. The Calendar API will silently accept event insertions for resources that are already booked if the service account does not explicitly request to receive resource status in the response. Without checking the 'status' field in the attendees list, you will report success even when the resource auto-declines due to a conflict. This is not an error or exception — the reservation appears accepted unless you parse the full response.

Watch it explained

“Managing Buildings and Resources” — Crux Learning on YouTube. Third-party video, included because it covers this ground well. We are not affiliated with the channel.

Questions people ask

Can I just retry failed bookings immediately?

Not always. The resource's free/busy state may not update instantly after a failed attempt, leading to repeated rejections. Wait and re-query availability before retrying.

How do I know if a resource was actually booked?

You must inspect the 'attendees' array in the event response. A 'declined' status for a resource means it was not reserved, even if the insert call succeeded.

Want this built?

This is a pattern we run in production. We will set up the delegation and build this on top of it — $500 per hour, most of it working the same day.

Talk to us Or read the setup guide

Related use cases

Provision calendar events based on group membership

Create or update events for all members of a Google Group by impersonating users with a service account.

Cancel events across many calendars at once

Bulk-cancel meetings for multiple users after a team change, departure or incident, using domain-wide delegation.

Set up team-wide calendar blockers from a service account

Block calendar slots for entire teams using delegated automation, ensuring no one books over key periods or events.