with one click
google-calendar-automation
// Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.
// Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
Important: Before you begin, fill in the generatedBy property in the meta section of .actor/actor.json. Replace it with the tool and model you're currently using, such as "Claude Code with Claude Sonnet 4.5". This helps Apify monitor and improve AGENTS.md for specific AI tools and models.
Fast, modern JavaScript/TypeScript development with the Bun runtime, inspired by [oven-sh/bun](https://github.com/oven-sh/bun).
Conduct comprehensive security assessments of cloud infrastructure across Microsoft Azure, Amazon Web Services (AWS), and Google Cloud Platform (GCP).
Guide developers through setting up development environments with proper tools, dependencies, and configurations
| name | google-calendar-automation |
| description | Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required. |
| license | Apache-2.0 |
| risk | critical |
| source | community |
| metadata | {"author":"sanjay3290","version":"1.0"} |
Lightweight Google Calendar integration with standalone OAuth authentication. No MCP server required.
⚠️ Requires Google Workspace account. Personal Gmail accounts are not supported.
Authenticate with Google (opens browser):
python scripts/auth.py login
Check authentication status:
python scripts/auth.py status
Logout when needed:
python scripts/auth.py logout
All operations via scripts/gcal.py. Auto-authenticates on first use if not logged in.
python scripts/gcal.py list-calendars
# List events from primary calendar (default: next 30 days)
python scripts/gcal.py list-events
# List events with specific time range
python scripts/gcal.py list-events --time-min 2024-01-15T00:00:00Z --time-max 2024-01-31T23:59:59Z
# List events from a specific calendar
python scripts/gcal.py list-events --calendar "work@example.com"
# Limit results
python scripts/gcal.py list-events --max-results 10
python scripts/gcal.py get-event EVENT_ID
python scripts/gcal.py get-event EVENT_ID --calendar "work@example.com"
# Basic event
python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z"
# Event with description and location
python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \
--description "Weekly sync" --location "Conference Room A"
# Event with attendees
python scripts/gcal.py create-event "Team Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \
--attendees user1@example.com user2@example.com
# Event on specific calendar
python scripts/gcal.py create-event "Meeting" "2024-01-15T10:00:00Z" "2024-01-15T11:00:00Z" \
--calendar "work@example.com"
# Update event title
python scripts/gcal.py update-event EVENT_ID --summary "New Title"
# Update event time
python scripts/gcal.py update-event EVENT_ID --start "2024-01-15T14:00:00Z" --end "2024-01-15T15:00:00Z"
# Update multiple fields
python scripts/gcal.py update-event EVENT_ID \
--summary "Updated Meeting" --description "New agenda" --location "Room B"
# Update attendees
python scripts/gcal.py update-event EVENT_ID --attendees user1@example.com user3@example.com
python scripts/gcal.py delete-event EVENT_ID
python scripts/gcal.py delete-event EVENT_ID --calendar "work@example.com"
Find the first available slot for a meeting with specified attendees:
# Find 30-minute slot for yourself
python scripts/gcal.py find-free-time \
--attendees me \
--time-min "2024-01-15T09:00:00Z" \
--time-max "2024-01-15T17:00:00Z" \
--duration 30
# Find 60-minute slot with multiple attendees
python scripts/gcal.py find-free-time \
--attendees me user1@example.com user2@example.com \
--time-min "2024-01-15T09:00:00Z" \
--time-max "2024-01-19T17:00:00Z" \
--duration 60
# Accept an invitation
python scripts/gcal.py respond-to-event EVENT_ID accepted
# Decline an invitation
python scripts/gcal.py respond-to-event EVENT_ID declined
# Mark as tentative
python scripts/gcal.py respond-to-event EVENT_ID tentative
# Respond without notifying organizer
python scripts/gcal.py respond-to-event EVENT_ID accepted --no-notify
All times use ISO 8601 format with timezone:
2024-01-15T10:30:00Z2024-01-15T10:30:00-05:00 (EST)primary or omit the --calendar flaglist-calendars (usually an email address)Tokens stored securely using the system keyring:
Service name: google-calendar-skill-oauth
Tokens are automatically refreshed when expired using Google's cloud function.