Status: Beta - Local Development Version
Automated system for syncing student council work schedules from Excel files to Google Calendar events.
This tool parses Harmobot harmonogram (Excel schedule files) and creates Google Calendar events for each person's assigned time slots. It's designed to integrate with existing student council infrastructure.
Migration Plan: This project will be migrated to the open-source Salata-WRSS-WIET (schej-it/timefullap) platform built in GoLang.
- 📊 Parses Excel schedule files with automatic slot merging
- 🔄 Converts person aliases to email addresses (with SQLite caching)
- 📅 Generates Google Calendar events with reminders
- ✉️ Sends calendar invites to assigned people
pip install pandas openpyxl google-auth-oauthlib google-api-python-client-
Google Calendar API credentials:
- Create a project in Google Cloud Console
- Enable Google Calendar API
- Download
credentials.json→ place intoken/folder
-
Prepare your schedule:
- Excel file with structure:
Godzinacolumn + date columns + person names in cells
- Excel file with structure:
-
Run:
python main.py
├── data/
│ ├── plan.xlsx # Input schedule file
│ └── xlsx_scrapper.py # Excel parser
├── name_to_email/
│ ├── email_resolver.py # Alias → email resolver
│ └── users.db # SQLite cache (auto-created)
├── token/
│ ├── credentials.json # Google API credentials (not in repo)
│ └── token.pkl # OAuth token (auto-generated)
├── convert_slots_to_events.py # Slot → Calendar event converter
├── event_sender.py # Google Calendar API client
└── main.py # Main pipeline
- Parse Excel → Extract person names and time slots per date
- Merge Slots → Combine consecutive time blocks
- Resolve Emails → Convert aliases to email addresses (prompts if unknown)
- Generate Events → Create Google Calendar event objects
- Send → Batch insert to Google Calendar with email invites
Edit convert_slots_to_events.py to customize event details:
- Summary/title
- Description
- Location
- Reminder settings (default: 60min email, 10min popup)
- First run requires Google OAuth authorization (browser popup)
- Unknown aliases trigger interactive email input (cached for future use)
- Events are sent to
primarycalendar withsendUpdates='all' - Beta version - local development only
This codebase is a proof-of-concept. Production deployment will migrate to the GoLang-based Salata platform for better performance and maintainability within the student council ecosystem.
Contributing: Issues and PRs welcome for the beta version. For production features, see the Salata repo.