{"id":16615628,"url":"https://github.com/pschmitt/gcal-import-ics","last_synced_at":"2025-10-29T19:30:29.291Z","repository":{"id":40419988,"uuid":"344835845","full_name":"pschmitt/gcal-import-ics","owner":"pschmitt","description":"CLI application to import ICS files to Google Calendar","archived":false,"fork":false,"pushed_at":"2023-09-18T08:38:12.000Z","size":99,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-02T04:24:37.111Z","etag":null,"topics":["calendar","docker","google-calendar","google-calendar-api","ics","python"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/pschmitt/gcal-import-ics","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pschmitt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-05T14:28:34.000Z","updated_at":"2024-06-11T21:13:14.000Z","dependencies_parsed_at":"2022-07-20T00:34:32.708Z","dependency_job_id":null,"html_url":"https://github.com/pschmitt/gcal-import-ics","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fgcal-import-ics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fgcal-import-ics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fgcal-import-ics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pschmitt%2Fgcal-import-ics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pschmitt","download_url":"https://codeload.github.com/pschmitt/gcal-import-ics/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238874422,"owners_count":19545186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","docker","google-calendar","google-calendar-api","ics","python"],"created_at":"2024-10-12T02:10:06.153Z","updated_at":"2025-10-29T19:30:28.835Z","avatar_url":"https://github.com/pschmitt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📅 Import ICS files to your Google Calendar, without the web interface.\n\n[![Build](https://github.com/pschmitt/gcal-import-ics/actions/workflows/build.yaml/badge.svg)](https://github.com/pschmitt/gcal-import-ics/actions/workflows/build.yaml)\n\n# TL;DR\n\n```shell\ndocker run -it --rm \\\n  -e \"TZ=Europe/Berlin\" \\\n  -v \"$PWD/config:/config\" \\\n  pschmitt/gcal-import-ics:latest \\\n    \"My Personal Calendar\" \\\n    /data/calendar.ics\n```\n\nand the main star of the show is [🌟 gcal_import.py](./gcal_import.py)\n\n# Installation\n\n```shell\ngit clone https://github.com/pschmitt/gcal-import-ics\ncd gcal-import-ics\n\npython -m venv .venv\nsource .venv/bin/activate\n\npip install -r requirements.txt\n```\n\n# Setup\n\nYou will need the following:\n\n- Your calendar ID (or its name)\n- a JSON credentials file. See [here](https://google-calendar-simple-api.readthedocs.io/en/latest/getting_started.html#credentials) for instructions.\n\n# Usage\n\n```shell\npython3 gcal_import.py \\\n  --debug \\\n  -c ./credentials/client_secret_blablablabla.apps.googleusercontent.com.json \\\n  -t ./credentials/gcal.token \\\n  -p \"PROXY=socks5h://corp.acme.com:8080\" \\\n  \"$GOOGLE_CALENDAR_NAME_OR_ID\" \\\n  \"$ICS_FILE_PATH_OR_URL\"\n```\n\n# Confluence calendar sync\n\n```shell\npython3 gcal_import.py \\\n  --debug \\\n  -c ./credentials/client_secret_blablablabla.apps.googleusercontent.com.json \\\n  -t ./credentials/gcal.token \\\n  -p \"PROXY=socks5h://corp.acme.com:8080\" \\\n  --confluence-url https://confluence.acme.com \\\n  --confluence-username admin \\\n  --confluence-password somePAssword01 \\\n  --confluence-calendars \"Team Calendar\" \\\n  --confluence-calendars \"Company events\" \\\n  --confluence-calendar-prefix \"Work: \"\n```\n\n# But why?\n\n1. https://groups.google.com/g/google-apps-manager/c/tgIAB35I5EE?pli=1\n2. Google Calendar seems to be unable to fetch ics files behind basic auth\n\n# TODO\n\n- [ ] 🚧 Fix status for some imported events (they are created with status=cancelled)\n- [x] Requests proxy option\n- [x] Delete unknown events\n- [x] With an optional date parameter (ie only delete future events)\n- [x] All-day events\n- [ ] Attendees\n- [ ] Reminders\n- [ ] Store metadata (\"imported by gcal_import.py\") somewhere (in source? organizer? description?)\n- [x] Clear calendar before import (optional)\n- [ ] Wait and retry when rate-limitted\n- [x] Optionally ignore SEQUENCE and always update\n- [x] Allow passing in the calendar name, instead of the ID\n- [x] Support recurring event *instances*\n- [x] Allow settings args with environment variables\n- [x] Confluence calendar sync\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschmitt%2Fgcal-import-ics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpschmitt%2Fgcal-import-ics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpschmitt%2Fgcal-import-ics/lists"}