Find open time slots in your Google Calendar, so you can easily answer the question "When are you free to talk next week?"
A smart calendar availability finder that connects to your Google Calendar and intelligently identifies available time slots based on your working hours, lunch breaks, holidays, and customizable busy criteria. Perfect for scheduling meetings, finding focus time, or answering availability questions quickly.
Built with β€οΈ by NuRelm
- Finds available time slots in any date range.
- Defaults to finding time in the next week.
- Considers your working hours and a daily lunch break.
- Respects holidays from a specified Google Calendar (e.g., your company's holiday calendar) and a manual list of dates.
- Intelligent busy detection with configurable criteria:
- Events with other attendees (meetings with colleagues)
- "Out of Office" events (vacation, sick days, etc.)
- Events of a specific color (for custom busy indicators)
- Go to the Google Cloud Console.
- Create a new project (or select an existing one).
- In the navigation menu, go to APIs & Services > Library.
- Search for "Google Calendar API" and click Enable.
- In the navigation menu, go to APIs & Services > Credentials.
- Click Create Credentials and choose OAuth client ID.
- If prompted, configure the consent screen. For the user type, select External and click Create.
- On the next screen, provide an app name (e.g., "Calendar Time Finder") and your email address. You can leave the other fields blank.
- For the application type, select Desktop app and click Create.
- A window will pop up with your client ID and client secret. Click the Download JSON button to download the credentials file.
- Rename the downloaded file to
credentials.jsonand place it in the same directory as the script.
Install the required Python packages using pip:
pip install -r requirements.txtTo find available time in the next week, simply run the script:
python gcal_pal.pyTo list the available calendar colors, use the --list-colors argument:
python gcal_pal.py --list-colorsThis will output a list of color IDs, their hex codes, and their English names. You can use these IDs to configure the busy_criteria.consider_color_id setting.
To find available time in a specific date range, use the --start and --end arguments:
python gcal_pal.py --start-date 2025-09-01 --end-date 2025-09-05The first time you run the script, it will open a browser window to ask for permission to access your Google Calendar. After you grant permission, it will store the authorization token in a token.json file for future use.
Successfully connected to Google Calendar API.
Minimum meeting duration: 60 minutes
Busy criteria:
- Consider attendees: true
- Consider out of office: true
- Consider color ID: 5
Available slots:
Monday, 8/25:
10:30am - 11:30am
2:00pm - 5:00pm
Tuesday, 8/26:
9:30am - 10:30am
12:30pm - 2:00pm
3:00pm - 5:00pm
...
The config.yaml file allows you to customize the script's behavior.
| Setting | Description | Example |
|---|---|---|
min_duration |
The minimum duration for a meeting in minutes. | 60 |
working_hours |
Your working hours. | start: "09:00"end: "17:00" |
lunch_break |
The time to block out for lunch. | start: "12:00"end: "13:00" |
holidays |
A list of manual holiday dates in YYYY-MM-DD format. | ["2025-12-25"] |
holiday_calendar_id |
The ID of a Google Calendar for holidays. | 'en.usa#holiday@group.v.calendar.google.com' |
busy_criteria |
Configuration for determining which events should be considered busy. | See below |
busy_criteria.consider_attendees |
If true, events with other attendees will be considered busy (default: true). | true |
busy_criteria.consider_out_of_office |
If true, "Out of Office" events will be considered busy (default: true). | true |
busy_criteria.consider_color_id |
If set, only events with this color ID will be considered busy. You can use the --list-colors command to find available color IDs. |
5 |
- Python 3.8 or higher
- Google Calendar API access
- A Google account with calendar data
- Clone the repository:
git clone https://github.com/your-username/gcal-pal.git
cd gcal-pal- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Follow the setup instructions above to configure Google Calendar API access.
python -m pytest tests/We welcome contributions! Please see our Contributing Guide for details on how to get started.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for your changes
- Ensure all tests pass
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This project is maintained by NuRelm, a software development company that builds innovative solutions for businesses. We're passionate about creating tools that make developers' and users' lives easier.
- π Bug Reports: Open an issue
- π‘ Feature Requests: Open an issue
- π§ Email: support@nurelm.com
- π Website: nurelm.com
- Google Calendar API team for providing excellent documentation
- The Python community for amazing libraries
- All contributors who help make this project better
Made with β€οΈ by NuRelm