# Google Calendar

> Create and manage events on Google Calendar.

App · Calendars · 4 actions · 1 trigger. Web page: https://docs.lodol.com/docs/integrations/google-calendar

## Triggers

Start a workflow when something happens in Google Calendar. See [how triggers work](https://docs.lodol.com/docs/concepts/triggers.md).

### Google Calendar New Event

Triggers when a new event is created in Google Calendar.

**Filters**: Narrow which events start a run.

- `calendar_id`

**Event fields**: What a run starts with. Later steps read each field with an @ reference.

- `id` (text)
- `summary` (text)
- `start` (text)
- `end` (text)
- `created` (text)
- `updated` (text)
- `html_link` (text)
- `description` (text)
- `location` (text)
- `attendees` (list)

## Actions

### Add event

Create a new event on a Google Calendar.

**Inputs**

- Title (`title`, text, required): Title of the event
- Start date and time (`start_date_time`, text, required): When the event starts (for example, 2024-01-15T10:00:00-05:00)
- End date and time (`end_date_time`, text, required): When the event ends (for example, 2024-01-15T11:00:00-05:00)
- Calendar ID (`calendar_id`, text): The calendar to add the event to. Leave blank to use your main calendar ('primary')
- Description (`description`, text): Description or notes for the event
- Location (`location`, text): Location of the event
- Time zone (`time_zone`, text): Time zone for the event (e.g., America/New_York)
- Attendees (`attendees`, list): List of attendee email addresses

**Outputs**

- `event_id` (text): ID of the created event
- `html_link` (text): URL link to the event

**Example output**

```json
{
  "event_id": "abc123xyz",
  "html_link": "https://calendar.google.com/calendar/event?eid=abc123xyz"
}
```

### Check time slot availability

Check if a time slot is available on a Google Calendar.

**Inputs**

- Calendar ID (`calendar_id`, text, required): The calendar to check (use 'primary' for your main calendar)
- Start date and time (`start_date_time`, text, required): When the time slot starts (for example, 2024-01-15T10:00:00-05:00)
- End date and time (`end_date_time`, text, required): When the time slot ends (for example, 2024-01-15T11:00:00-05:00)
- Time zone (`time_zone`, text): Time zone for the check (e.g., America/New_York)

**Outputs**

- `busy` (list): List of busy time windows
- `busy_summary` (text): Human-readable summary of busy times
- `is_available` (true/false): Whether the time slot is free

**Example output**

```json
{
  "busy": [],
  "busy_summary": "None",
  "is_available": true
}
```

### Find events

List the events on a Google Calendar in a time range, soonest first, with each event's title, start and end, location, description and guest emails.

**Inputs**

- Calendar ID (`calendar_id`, text): The calendar to read. Leave blank to use your main calendar ('primary')
- From (`start_date_time`, text): Only events ending after this time (for example, 2024-01-15T00:00:00-05:00). Leave blank to start from now
- Until (`end_date_time`, text): Only events starting before this time (for example, 2024-01-22T00:00:00-05:00)
- Time zone (`time_zone`, text): Time zone for dates written without an offset (e.g., America/New_York)
- Search (`search`, text): Only events whose title, description, location or guests contain this text
- Limit (`limit`, number): Most events to return (1-250, default 25)

**Outputs**

- `count` (number): Number of events returned
- `events` (list)

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "attendees": [
        "jane@acme.com"
      ],
      "created": "2024-01-10T09:00:00Z",
      "description": "",
      "end": "2024-01-15T10:30:00-05:00",
      "html_link": "https://calendar.google.com/calendar/event?eid=abc123xyz",
      "id": "abc123xyz",
      "location": "",
      "start": "2024-01-15T10:00:00-05:00",
      "summary": "Intro call with Acme",
      "updated": "2024-01-10T09:00:00Z"
    }
  ]
}
```

### Remove event

Delete a calendar event by its title.

**Inputs**

- Calendar ID (`calendar_id`, text): The calendar to remove the event from. Leave blank to use your main calendar ('primary')
- Title (`title`, text, required): Title of the event to delete
- If multiple events match (`multiple_mode`, text): How to handle multiple matching events: 'first' (delete only the first match) or 'all' (delete all matches)
- Send updates (`send_updates`, text): Whether to notify guests about the change: 'all', 'externalOnly', or 'none'

**Outputs**: Response envelope; the payload is in the "deletedEventIds" field.

- `deletedEventIds` (object)

**Example output**

```json
{
  "deletedEventIds": {
    "deleted_event_ids": [
      "event123"
    ]
  }
}
```
