# Google Slides

> Build and edit presentations in Google Slides.

App · Documents · 20 actions. Web page: https://docs.lodol.com/docs/integrations/google-slides

## Actions

### Add image

Place an image on a slide from a publicly reachable URL (under 50 MB, PNG/JPEG/GIF).

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- Image URL (`image_url`, text, required): A public link to the image file.
- Distance from left (pt) (`left_pt`, number): How far from the slide's left edge to place it, in points. From 0 to 720.0. Default: `60.0`.
- Distance from top (pt) (`top_pt`, number): How far from the slide's top edge to place it, in points. From 0 to 405.0. Default: `100.0`.
- Width (pt) (`width_pt`, number): How wide to make it, in points. A 16:9 slide is 720 pt wide. From 1 to 720.0. Default: `400.0`.
- Height (pt) (`height_pt`, number): How tall to make it, in points. A 16:9 slide is 405 pt tall. From 1 to 405.0. Default: `200.0`.

**Outputs**: The image that was added

- `object_id` (text): Object ID of the new image
- `slide_id` (text): The slide it was added to

**Example output**

```json
{
  "object_id": "g2d5f1a9b7_0_9",
  "slide_id": "g2d5f1a9b7_0_1"
}
```

### Add slide

Add an empty slide using one of Google Slides' layouts.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Layout (`layout`, text): Which built-in layout the new slide should use. One of: `TITLE` (Title slide), `TITLE_AND_BODY` (Title and body), `TITLE_AND_TWO_COLUMNS` (Title and two columns), `TITLE_ONLY` (Title only), `SECTION_HEADER` (Section header), `SECTION_TITLE_AND_DESCRIPTION` (Section title and description), `ONE_COLUMN_TEXT` (One column text), `MAIN_POINT` (Main point), `BIG_NUMBER` (Big number), `CAPTION_ONLY` (Caption only), `BLANK`. Default: `TITLE_AND_BODY`.
- Position (`insert_at_index`, number): Where to insert it, counting from 0. Leave empty to add it at the end. At least 0.

**Outputs**: The slide that was added

- `index` (number): Zero-based position it was inserted at
- `layout` (text): The layout it was built from
- `slide_id` (text): Object ID of the new slide

**Example output**

```json
{
  "index": 2,
  "layout": "TITLE_AND_BODY",
  "slide_id": "g2d5f1a9b7_0_2"
}
```

### Add slide with title and body

Add a slide and fill in its title and body in one step, the quickest way to build a deck from a list of points.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Title (`title`, text, required): Text for the slide's title.
- Body lines (`body`, list): One line of body text per item. Leave empty for a title-only slide.
- Bullet style (`bullet_preset`, text): Turn each line into a list item in this style. Leave empty for plain paragraphs. One of: `BULLET_DISC_CIRCLE_SQUARE` (Bulleted (● ○ ■)), `BULLET_ARROW_DIAMOND_DISC` (Bulleted (➔ ◆ ●)), `BULLET_CHECKBOX` (Checkboxes), `NUMBERED_DIGIT_ALPHA_ROMAN` (Numbered (1. a. i.)), `NUMBERED_DIGIT_NESTED` (Numbered (1. 1.1. 1.1.1.)).
- Position (`insert_at_index`, number): Where to insert it, counting from 0. Leave empty to add it at the end. At least 0.

**Outputs**: The slide that was added

- `body_line_count` (number): How many body lines were written
- `body_object_id` (text): Object ID of the body box, or empty for a title-only slide
- `index` (number): Zero-based position it was inserted at
- `slide_id` (text): Object ID of the new slide
- `title_object_id` (text): Object ID of the title box, for restyling it

**Example output**

```json
{
  "body_line_count": 3,
  "body_object_id": "lodol33body",
  "index": 3,
  "slide_id": "g2d5f1a9b7_0_3",
  "title_object_id": "lodol33title"
}
```

### Add table

Add an empty table to a slide, then fill it cell by cell.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- Rows (`rows`, number, required): How many rows the table should have. From 1 to 20. Default: `2`.
- Columns (`columns`, number, required): How many columns the table should have. From 1 to 20. Default: `2`.
- Distance from left (pt) (`left_pt`, number): How far from the slide's left edge to place it, in points. From 0 to 720.0. Default: `60.0`.
- Distance from top (pt) (`top_pt`, number): How far from the slide's top edge to place it, in points. From 0 to 405.0. Default: `100.0`.
- Width (pt) (`width_pt`, number): How wide to make it, in points. A 16:9 slide is 720 pt wide. From 1 to 720.0. Default: `400.0`.
- Height (pt) (`height_pt`, number): How tall to make it, in points. A 16:9 slide is 405 pt tall. From 1 to 405.0. Default: `200.0`.

**Outputs**: The table that was added

- `columns` (number): Column count
- `object_id` (text): Object ID of the new table
- `rows` (number): Row count
- `slide_id` (text): The slide it was added to

**Example output**

```json
{
  "columns": 2,
  "object_id": "g2d5f1a9b7_0_7",
  "rows": 3,
  "slide_id": "g2d5f1a9b7_0_1"
}
```

### Add text box

Add a text box to a slide, optionally as a bulleted list.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- Text (`text`, text, required): The text to put in the box. One line per paragraph.
- Bullet style (`bullet_preset`, text): Turn each line into a list item in this style. Leave empty for plain paragraphs. One of: `BULLET_DISC_CIRCLE_SQUARE` (Bulleted (● ○ ■)), `BULLET_ARROW_DIAMOND_DISC` (Bulleted (➔ ◆ ●)), `BULLET_CHECKBOX` (Checkboxes), `NUMBERED_DIGIT_ALPHA_ROMAN` (Numbered (1. a. i.)), `NUMBERED_DIGIT_NESTED` (Numbered (1. 1.1. 1.1.1.)).
- Distance from left (pt) (`left_pt`, number): How far from the slide's left edge to place it, in points. From 0 to 720.0. Default: `60.0`.
- Distance from top (pt) (`top_pt`, number): How far from the slide's top edge to place it, in points. From 0 to 405.0. Default: `100.0`.
- Width (pt) (`width_pt`, number): How wide to make it, in points. A 16:9 slide is 720 pt wide. From 1 to 720.0. Default: `400.0`.
- Height (pt) (`height_pt`, number): How tall to make it, in points. A 16:9 slide is 405 pt tall. From 1 to 405.0. Default: `200.0`.

**Outputs**: The text box that was added

- `object_id` (text): Object ID of the new text box
- `slide_id` (text): The slide it was added to

**Example output**

```json
{
  "object_id": "lodolbox4821903",
  "slide_id": "g2d5f1a9b7_0_1"
}
```

### Copy presentation

Copy an existing presentation under a new name, the usual way to start from a template deck.

**Inputs**

- Presentation to copy (`presentation_id`, text, required): The presentation (often a template) to copy.
- Name for the copy (`title`, text, required): Name to give the new presentation.

**Outputs**: The copy that was created

- `presentation_id` (text): ID of the copy
- `title` (text): Its title
- `url` (text): Link that opens the copy

**Example output**

```json
{
  "presentation_id": "1nK9RiL3gM0qOwS5tU7vX9yZ1aB3cD5eF7gH9iJ1kL3m",
  "title": "Acme: Q3 business review",
  "url": "https://docs.google.com/presentation/d/1nK9RiL3gM0qOwS5tU7vX9yZ1aB3cD5eF7gH9iJ1kL3m/edit"
}
```

### Create presentation

Create a new, empty Google Slides presentation.

**Inputs**

- Title (`title`, text, required): Name for the new presentation.

**Outputs**: The presentation that was created

- `presentation_id` (text): ID of the new presentation
- `slide_count` (number): How many slides it starts with
- `title` (text): Its title
- `url` (text): Link that opens the presentation

**Example output**

```json
{
  "presentation_id": "1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l",
  "slide_count": 1,
  "title": "Q3 business review",
  "url": "https://docs.google.com/presentation/d/1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l/edit"
}
```

### Delete presentation

Move a presentation to the Google Drive trash.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to move to the trash.

**Outputs**: No return value

### Delete slide

Delete one slide from a presentation.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to delete.

**Outputs**: No return value

### Duplicate slide

Duplicate a slide, including its text and images. The copy is placed directly after the original.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.

**Outputs**: The duplicated slide

- `index` (number): Zero-based position of the duplicate
- `slide_id` (text): Object ID of the duplicate
- `source_slide_id` (text): Object ID of the slide that was copied

**Example output**

```json
{
  "index": 2,
  "slide_id": "g2d5f1a9b7_0_4",
  "source_slide_id": "g2d5f1a9b7_0_1"
}
```

### Format text

Restyle all of the text in a text box, title or body: bold, italic, size, font and alignment.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Text box (`object_id`, text, required): Which piece of text to restyle.
- Styles (`styles`, text): Styles to apply. Anything left unticked is turned off. One or more of: `BOLD`, `ITALIC`, `UNDERLINE`, `STRIKETHROUGH`.
- Font size (pt) (`font_size_pt`, number): Text size in points. Leave empty to keep the current size. From 1 to 400.
- Font (`font_family`, text): Leave empty to keep the current font. One of: `Arial`, `Calibri`, `Cambria`, `Comfortaa`, `Comic Sans MS`, `Courier New`, `Georgia`, `Impact`, `Lato`, `Merriweather`, and 10 more.
- Alignment (`alignment`, text): Leave empty to keep the current alignment. One of: `START` (Left), `CENTER`, `END` (Right), `JUSTIFIED`.

**Outputs**: The styling that was applied

- `alignment` (text): Alignment that was set, if any
- `font_family` (text): Font that was set, if any
- `font_size_pt` (number): Font size that was set, if any
- `object_id` (text): Object ID of the text that was restyled
- `styles` (list): The styles that are now switched on

**Example output**

```json
{
  "alignment": "CENTER",
  "font_family": "Roboto",
  "font_size_pt": 24,
  "object_id": "lodolbox4821903",
  "styles": [
    "BOLD"
  ]
}
```

### Get all text

Read every slide's text (text boxes, placeholders and tables) as plain text, ready to summarize or search.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.

**Outputs**: The presentation's text

- `slide_count` (number): How many slides were read
- `slides` (list): The text of each slide, in deck order
- `text` (text): All of the deck's text, one section per slide

**Example output**

```json
{
  "slide_count": 2,
  "slides": [
    {
      "index": 0,
      "slide_id": "g2d5f1a9b7_0_0",
      "text": "Q3 business review"
    },
    {
      "index": 1,
      "slide_id": "g2d5f1a9b7_0_1",
      "text": "Revenue\nUp 18% quarter over quarter"
    }
  ],
  "text": "--- Slide 1 ---\nQ3 business review\n\n--- Slide 2 ---\nRevenue\nUp 18% quarter over quarter"
}
```

### Get presentation details

Read a presentation's title, slide count and page size.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.

**Outputs**: Details of the presentation

- `locale` (text): Its locale, e.g. 'en-US'
- `page_height_pt` (number): Slide height in points
- `page_width_pt` (number): Slide width in points
- `presentation_id` (text): ID of the presentation
- `slide_count` (number): How many slides it holds
- `title` (text): Its title
- `url` (text): Link that opens the presentation

**Example output**

```json
{
  "locale": "en-US",
  "page_height_pt": 405.0,
  "page_width_pt": 720.0,
  "presentation_id": "1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l",
  "slide_count": 8,
  "title": "Q3 business review",
  "url": "https://docs.google.com/presentation/d/1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l/edit"
}
```

### Get slide image

Render a slide as a PNG and return its image URL, useful for posting a slide into chat or email. The URL is valid for 30 minutes.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- Image size (`size`, text): How large to render the slide. One of: `SMALL` (Small (200px wide)), `MEDIUM` (Medium (800px wide)), `LARGE` (Large (1600px wide)). Default: `MEDIUM`.

**Outputs**: The rendered slide image

- `content_url` (text): URL of the rendered PNG (valid for 30 minutes)
- `height` (number): Height of the image in pixels
- `width` (number): Width of the image in pixels

**Example output**

```json
{
  "content_url": "https://lh3.googleusercontent.com/slides-thumbnail",
  "height": 450,
  "width": 800
}
```

### List presentations

List the presentations in the connected Google account, most recently edited first.

**Inputs**

- Name contains (`name_contains`, text): Only list presentations whose name contains this text.
- Modified after (`modified_after`, date and time): Only list presentations edited after this date and time.
- Maximum results (`max_results`, number): How many presentations to return, at most. From 1 to 100. Default: `25`.

**Outputs**: Matching presentations

- `count` (number): How many were returned
- `presentations` (list): The matching presentations

**Example output**

```json
{
  "count": 1,
  "presentations": [
    {
      "modified_time": "2026-08-24T17:12:05.431Z",
      "presentation_id": "1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l",
      "title": "Q3 business review",
      "url": "https://docs.google.com/presentation/d/1mJ8QhK2fL9pNvR4sT6uW8xY0zA2bC4dE6fG8hI0jK2l/edit"
    }
  ]
}
```

### List slides

List a presentation's slides in order, with each one's id, position and title.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.

**Outputs**: The presentation's slides

- `count` (number): How many slides there are
- `slides` (list): The slides, in deck order

**Example output**

```json
{
  "count": 2,
  "slides": [
    {
      "element_count": 2,
      "index": 0,
      "layout_id": "g2d5f1a9b7_1_0",
      "slide_id": "g2d5f1a9b7_0_0",
      "title": "Q3 business review"
    },
    {
      "element_count": 3,
      "index": 1,
      "layout_id": "g2d5f1a9b7_1_1",
      "slide_id": "g2d5f1a9b7_0_1",
      "title": "Revenue"
    }
  ]
}
```

### Move slide

Move a slide to a different position in the deck.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- New position (`new_index`, number, required): Where to move it, counting from 0 for the first slide. At least 0.

**Outputs**: The slide that was moved

- `index` (number): Its new zero-based position
- `previous_index` (number): Where it was before the move
- `slide_id` (text): Object ID of the slide that moved

**Example output**

```json
{
  "index": 0,
  "previous_index": 1,
  "slide_id": "g2d5f1a9b7_0_1"
}
```

### Replace all text

Replace every occurrence of a phrase across the deck: how a template's placeholders get filled in.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Find (`find_text`, text, required): The text to look for, e.g. '{{customer}}'.
- Replace with (`replace_text`, text, required): What to put in its place.
- Match case (`match_case`, true/false): On: only replace text whose capitalization matches. Default: `true`.
- Limit to slides (`slide_ids`, list): Only replace on these slides. Leave empty to replace across the whole presentation.

**Outputs**: The result of the replacement

- `occurrences_changed` (number): How many occurrences were replaced

**Example output**

```json
{
  "occurrences_changed": 4
}
```

### Set speaker notes

Write the speaker notes for a slide.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Slide (`slide_id`, text, required): The slide to act on.
- Notes (`notes`, text, required): What the presenter should say on this slide.
- Replace existing notes (`replace_existing`, true/false): On: overwrite whatever notes the slide already has. Off: add these notes underneath them. Default: `true`.

**Outputs**: The speaker notes that were written

- `notes_object_id` (text): Object ID of the notes box
- `slide_id` (text): The slide whose notes were written

**Example output**

```json
{
  "notes_object_id": "g2d5f1a9b7_2_1",
  "slide_id": "g2d5f1a9b7_0_1"
}
```

### Set table cell text

Replace the text in one cell of a table on a slide.

**Inputs**

- Presentation (`presentation_id`, text, required): The presentation to work on.
- Table (`table_object_id`, text, required): The table to write into.
- Row (`row`, number, required): Which row, counting from 0 for the first row. From 0 to 19. Default: `0`.
- Column (`column`, number, required): Which column, counting from 0 for the first column. From 0 to 19. Default: `0`.
- Text (`text`, text, required): What the cell should say.

**Outputs**: The cell that was written

- `column` (number): Column that was written
- `object_id` (text): Object ID of the table
- `row` (number): Row that was written
- `slide_id` (text): The slide the table is on

**Example output**

```json
{
  "column": 0,
  "object_id": "g2d5f1a9b7_0_7",
  "row": 0,
  "slide_id": "g2d5f1a9b7_0_1"
}
```
