All articles
Playbook5 min read

Turn a Google Sheets Booking Calendar into an Availability Report in Slack

Find the open windows in a booking sheet by combining reservations, holds and maintenance blocks, then listing what remains available. Mio can read the sheet and bring the report into Slack; your team still decides what can be offered or booked.

The Mio Team

TL;DR

  • Specify the sheet, resources, date horizon and occupancy rules before calculating gaps.
  • Treat holds and maintenance as blocks when your rules require it. A missing status is not a free slot.
  • List availability per resource, then calculate the overlap when several resources must be free together.
  • Start with a private report. Do not change prices, accept bookings or broaden its audience as part of the read-only job.

To turn a Google Sheets booking calendar into an availability report, read the occupied intervals for each resource, combine overlapping blocks and list the gaps inside a defined date horizon. If several resources must be booked together, intersect their free windows. Send the result to Slack with its source, calculation rules and unresolved assumptions.

Ask which windows are open, not how the month is performing

A monthly occupancy percentage does not tell an operator whether two rooms are free on the same dates. A revenue total does not reveal a maintenance block. The availability report answers a narrower question: which exact windows deserve a closer look?

Keep that question separate from pricing, demand forecasting and reservation acceptance. A gap in the sheet is only a candidate opening. Cleaning, staffing, minimum stays or an outdated source can still make it unusable.

Give the calculation an explicit source and rule set

Name the workbook, tab and relevant range. Google Sheets supports reading cell values from specified ranges. The practical point is to identify the current booking rows, not an old monthly summary that happens to be in the same workbook.

  • Resource: the room, space or item occupied by each reservation. Use a consistent identifier.
  • Start and end: include the year and an unambiguous date format. Specify whether the end date is exclusive.
  • Status: define which values count as confirmed, held, canceled or unknown.
  • Other blocks: include maintenance, owner use or preparation time according to your operating rules.
  • Coverage: state the reporting horizon, time zone and whether all relevant rows were read.

For overnight bookings, an exclusive end means a January 4-6 reservation occupies the nights starting January 4 and 5. It does not occupy the night starting January 6. Same-day turnover still depends on the business's rules. Do not quietly reuse overnight assumptions for hourly appointments.

A small example you can check by hand

Consider this fictional three-studio example, with a horizon of January 4-11, 2027. End dates are exclusive, and holds and maintenance count as occupied. These rows illustrate the calculation, not customer activity.

ResourceOccupied intervalsOpen intervals
Studio AJan 4-6 confirmed; Jan 8-9 maintenanceJan 6-8; Jan 9-11
Studio BJan 5-7 hold; Jan 9-10 confirmedJan 4-5; Jan 7-9; Jan 10-11
Studio CJan 4-5 confirmed; Jan 7-8 maintenanceJan 5-7; Jan 8-11

All three are free together only from January 10 to January 11: one night. Adding their individual free nights would answer a different question and overstate the shared opening. If a blocked interval overlaps another block, combine them before counting occupied nights.

The Slack request

Mio is a Slack-native AI employee that can read a connected Google Sheet, calculate availability windows and deliver a formatted Slack message. Start with a private report and replace the bracketed fields in this template.

@mio read [sheet URL, tab and range] and prepare an availability report for [resources] from [start] to [end] in [time zone]. Use [start/end columns] and treat end dates as [exclusive or inclusive]. Count [status values] and [maintenance/hold rules] as occupied. Flag unknown dates or statuses instead of treating them as free. List open windows per resource, their duration and weekday/weekend split using [weekend definition]. Then show windows when all selected resources are free. Include the source link, read time and any coverage limits. Omit guest names and booking amounts. Return the report only in this DM. Do not edit the sheet, change prices, accept bookings or send it elsewhere.

If the sheet does not distinguish a hold from a cancellation, fix the input rule before using the result. A longer prompt cannot supply a business decision that was never recorded.

Check the boundaries before making it recurring

Check a confirmed reservation, a hold, a maintenance interval, an overlapping block and an end-date boundary against the original sheet. Confirm that a canceled row follows your rule and an unknown row is flagged. Recalculate one shared opening by hand.

Use those examples as a small workflow acceptance test. The calculation should pass the same checks after a changed column name, status convention or date format. A successful read is not sufficient if the report interprets the rows incorrectly.

Once the first report is useful, save a recurring version with its schedule, time zone, source and recipient. Confirm the saved audience matches the intended destination. Do not assume a job saved for a DM can post into a shared channel. The recurring-workflow runbook gives the next operator a place to keep those rules and the exception owner.

Keep the decision with the operator

The report should finish with windows to review and assumptions to resolve, not bookings made. Verify operational readiness and current source data before offering a slot. A scheduled report can become stale as soon as another reservation arrives.

Try the availability review with Mio in Slack. Start with one sheet and one read-only report, then decide whether it earns a place in the team's routine.

Mio is the Slack-native AI employee that already knows your company, connects to 3,000+ tools, and turns shared context into work. Just @mio, it's handled.