<!-- BusyBot node reference — https://busybot.net/tools/google-slides/ -->

> Node: Google Slides (`google_slides`) · Action (binary) · v1
> Category: Productivity · Credentials: Google Slides OAuth2 (`googleSlidesOAuth2Api`), Google API (Service Account) (`googleApi`)
> Updated: 2026-08-16

# Google Slides

> Create, retrieve, and update Google Slides presentations and pages.

## Overview

Google Slides tool provides full access to the Google Slides API. Presentation operations: create a new presentation with a title; get a presentation by ID (returns full JSON including slides, layouts, masters, notes); get presentation slides (returns the slides array with optional limit); replace all occurrences of text across slides using batchUpdate with replaceAllText. Page operations: get a specific page (slide, layout, master, or notes page) by its object ID; get a thumbnail image URL for a page, with optional download of the PNG image as binary data. Authentication supports both OAuth2 (recommended) and Service Account (googleApi). Binary output is only produced by the page/getThumbnail operation when downloadImage=true — the PNG is fetched from the contentUrl and stored via prepareBinaryData in the "thumbnail" binary property.

**Category:** Productivity  
**Tool Name:** `google_slides`  
**Version:** 1

**Appearance:** Icon: `lucide-MonitorCheck` | Color: `#F4B400`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Google Slides OAuth2**, **Google API (Service Account)** credentials.
See the [Credentials Guide](https://busybot.net/credentials/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Page | `page` |
| Presentation | `presentation` |

### Operations

**Presentation** (`presentation`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new Google Slides presentation. |
| Get | `get` | Get a presentation by ID (full JSON including slides, layouts, masters). |
| Get Slides | `getSlides` | Get only the slides array from a presentation, with optional limit. |
| Replace Text | `replaceText` | Replace all occurrences of text across slides using batchUpdate. |

**Page** (`page`)

| Operation | Value | Description |
|-----------|-------|-------------|
| Get | `get` | Get a specific page by its object ID. |
| Get Thumbnail | `getThumbnail` | Get the thumbnail image URL for a page, with optional PNG download. |

### Parameters

String parameters accept `{{ $json.field }}` expressions, which are evaluated once per input item.

#### Presentation: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Title | `string` | Yes | — | Title of the presentation to create. |

#### Presentation: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Presentation ID (`presentationId`) | `string` | Yes | — | ID of the presentation. Found in the presentation URL: https://docs.google.com/presentation/d/PRESENTATION_ID/edit |

#### Presentation: Get Slides

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Presentation ID (`presentationId`) | `string` | Yes | — | ID of the presentation. Found in the presentation URL: https://docs.google.com/presentation/d/PRESENTATION_ID/edit |
| Return All | `boolean` | No | `false` | Whether to return all slides or only up to a limit. |
| Limit | `number` | No | `100` | Maximum number of slides to return. Accepts 1–500. _(shown when Return All is `false`)_ |

#### Presentation: Replace Text

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Presentation ID (`presentationId`) | `string` | Yes | — | ID of the presentation. Found in the presentation URL: https://docs.google.com/presentation/d/PRESENTATION_ID/edit |
| Search For | `string` | Yes | — | The text to search for and replace in the presentation. |
| Replace With | `string` | Yes | — | The replacement text. |
| Match Case | `boolean` | No | `false` | Whether the text search is case-sensitive. |
| Restrict to Page Object IDs | `string` | No | — | Comma-separated list of page object IDs to restrict text replacement to specific slides. Leave empty to replace in all slides. |

#### Page: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Presentation ID (`presentationId`) | `string` | Yes | — | ID of the presentation. Found in the presentation URL: https://docs.google.com/presentation/d/PRESENTATION_ID/edit |
| Page Object ID | `string` | Yes | — | The object ID of the page (slide) to operate on. Found in the slide's objectId property. |

#### Page: Get Thumbnail

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Presentation ID (`presentationId`) | `string` | Yes | — | ID of the presentation. Found in the presentation URL: https://docs.google.com/presentation/d/PRESENTATION_ID/edit |
| Page Object ID | `string` | Yes | — | The object ID of the page (slide) to operate on. Found in the slide's objectId property. |
| Download Image | `boolean` | No | `false` | Whether to download the thumbnail PNG image and store it as binary data in the "thumbnail" output property. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Authentication | `options` | No | `oAuth2` | Authentication method to use. |
| | | | | Options: `oAuth2`, `serviceAccount` |
| Google Account | `credential` | No | — | Connect or select your Google account. _(shown when Authentication is `oAuth2`)_ |
| Service Account Email | `string` | Yes | — | The email address of the Google service account. _(shown when Authentication is `serviceAccount`)_ |
| Private Key | `string` | Yes | — | The private key from the service account JSON key file. _(shown when Authentication is `serviceAccount`)_ |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Accepts 1–20. |

## Output Data

The Google Slides API response is merged into the item JSON at the top level, so the response fields sit alongside the fields the item already carried. The rest of the input item passes through unchanged and upstream binary data is forwarded.

One input item produces one output item for `Presentation: Create`, `Presentation: Get`, `Presentation: Replace Text`, `Page: Get` and `Page: Get Thumbnail`.

`Presentation: Get Slides` is the only operation that fans out: it emits one output item per slide, each merging that slide's fields — including the `objectId` you pass back into the Page operations — into the input item's JSON. With Return All off, the slides array is trimmed to Limit first. A presentation with no slides still emits exactly one item, carrying the input item's JSON unchanged, so the branch never goes empty.

`Page: Get Thumbnail` merges the thumbnail metadata the API returns — the `contentUrl` to fetch the image from, plus its width and height. With Download Image on, the node also fetches that PNG and attaches it as binary under the property name `thumbnail`, named `{pageObjectId}.png` with MIME type `image/png`; any binary the item already carried is kept alongside it.

Reference the result downstream by expression, e.g. `{{ $json.contentUrl }}`.

## Usage Examples

- Create a new blank Google Slides presentation
- Get full presentation data including all slides and layouts
- Retrieve only the slides array from a presentation
- Replace all instances of placeholder text across slides
- Get a specific slide page by its object ID
- Download a slide thumbnail as a PNG image
- Get thumbnail metadata (URL, width, height) without downloading

## Example Configuration

Create a new presentation:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "create",
    "title": "My New Presentation"
  }
}
```

Get the full presentation JSON:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "get",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
  }
}
```

Fan out every slide in a presentation as its own item:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "getSlides",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "returnAll": true
  }
}
```

Return only the first five slides:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "getSlides",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "returnAll": false,
    "limit": 5
  }
}
```

Replace a placeholder everywhere in the deck, taking the replacement from the item:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "replaceText",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "text": "CLIENT_NAME",
    "replaceText": "{{ $json.clientName }}",
    "matchCase": false
  }
}
```

Replace text on named slides only, matching case:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "presentation",
    "operation": "replaceText",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "text": "CLIENT_NAME",
    "replaceText": "{{ $json.clientName }}",
    "matchCase": true,
    "pageObjectIds": "SLIDE_ID_1,SLIDE_ID_2,SLIDE_ID_3"
  }
}
```

Get one page by its object ID:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "page",
    "operation": "get",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "pageObjectId": "SLIDE_ID_1"
  }
}
```

Get thumbnail metadata without downloading the image:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "page",
    "operation": "getThumbnail",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "pageObjectId": "SLIDE_ID_1",
    "downloadImage": false
  }
}
```

Download the thumbnail PNG as binary data:

```json
{
  "type": "google_slides",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "page",
    "operation": "getThumbnail",
    "presentationId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
    "pageObjectId": "SLIDE_ID_1",
    "downloadImage": true
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Create presentations, get slides, replace text, and download page thumbnails using the Google Slides API.