Skip to content

cahenesy/MeetingBudgetManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Meeting Budget Manager

Protect your Google Calendar from runaway meetings. Once your accepted meetings on a given workday hit a configured budget, Meeting Budget Manager fills the remaining open slots with focus-time blocks that auto-decline new invites — so co-workers can't pile on yet another pow-wow.

The popup copy reads like a 1950s used-car ad. That's on purpose.

Meeting Budget Manager mascot — a 1950s used-car-salesman illustration

Two implementations

Two independent ports of the same product live in this repo:

  • Extension/code/ — A Chrome MV3 extension. Also published on the Chrome Web Store as aljklfcciklemdggglfadodpkngdcphp.
  • AppScript/ — A Google Apps Script web app. Same algorithm, different host. This version exists because some Google Workspace environments restrict third-party Chrome extensions; the Apps Script port runs entirely inside Google's own infrastructure and side-steps that restriction.

They are not built from shared source. When you fix a bug in one, mirror the fix to the other. See CLAUDE.md for the platform-level differences that remain.

Install — Chrome Extension

The easiest path is the published Chrome Web Store listing. To run from source instead:

  1. Go to chrome://extensions and enable Developer Mode.
  2. Click "Load unpacked" and select the Extension/code/ directory.
  3. Click the extension's toolbar icon to open the popup, configure your settings, and click Rev Up My Sched!.

The first run will prompt for Google Calendar OAuth.

Install — Apps Script

  1. Create a new project at https://script.google.com.
  2. Enable the Advanced Calendar Service: Services → Calendar (this exposes Calendar.Events and Calendar.Calendars).
  3. Paste the contents of AppScript/code.js into Code.gs.
  4. Add an HTML file named popup (matching the doGet reference) and paste in AppScript/popup.html.
  5. Deploy → New deployment → Web app (execute as: me, access: only me).
  6. Open the web-app URL, configure your settings, and click Rev Up My Sched!.

The first run will prompt for Calendar and Gmail scopes (Gmail is used to email you the daily Cruise Control summary).

Settings

Setting What it does
Workdays + working hours Per-day on/off plus start/end time. Only these windows are scanned.
Daily Meeting Budget Hours of accepted meetings that triggers focus-time blocking on that day.
Sched Scoutin' Horizon How many workdays ahead to scan.
Shortest Work Pit Stop Minimum gap size that becomes a focus-time block. Smaller gaps are skipped.
Gear Shift Test Drive previews changes only; Full Throttle actually writes events.
Cruise Control On! Runs the scan automatically once a day.

How it works

For each upcoming workday in the configured horizon:

  1. Fetch all events in your working window from your primary calendar.
  2. Filter to default events you've accepted (responseStatus === 'accepted' on your self-attendee record).
  3. Round start/end times to the nearest 15 minutes, merge overlapping intervals, sum the total meeting hours.
  4. If total ≥ daily budget, find gaps within the working window that aren't already blocked by meetings, existing focus time, or out-of-office events.
  5. In Full Throttle, delete any focus-time events this tool previously created, then insert new focus-time events covering the gaps with autoDeclineMode: declineAllConflictingInvitations.

Both implementations only delete focus-time events they own — events created by Meeting Budget Manager are tagged with extendedProperties.private.createdBy === 'MeetingBudgetManager'. Focus-time you create by hand is left alone.

Contributing

Bugs and suggestions welcome via GitHub Issues. Note that any fix typically needs to be mirrored to both the Extension and the Apps Script copies — CLAUDE.md describes what differs between them.

License

MIT — see LICENSE.

About

Auto-block focus time on Google Calendar when your meeting budget is exceeded. Chrome extension and Apps Script port.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors