Editing and Styling Text

This page tells you how to edit and style text in your presentation using the Slides API.

About text

Text in your presentation is always contained within a shape or a table cell. The API lets you modify this text in a number of ways:

  • You can insert, delete, or replace text in your presentation.
  • You can add paragraph formatting to create bulleted lists.
  • You can change character formatting such as bold, italics, color, font size, or hyperlinks.

See the concepts page Text Structure and Styling for a general overview of how text styling works in the Slides API. Also check out the above video to see a complete example (Python) combining several of the formatting concepts from the sections below.

Inserting, deleting, or replacing text

There are two ways you can replace text in a presentation using the Slides API: by performing a global search-and-replace, or by explicitly deleting and adding text. Both ways use the batchUpdate method, but with different request types.

Global search and replace

Use ReplaceAllTextRequest to do a global search-and-replace throughout your presentation.

The Text Merging section of the Merging Data guide provides an example of how you can use this request type.

Replacing text within a shape

The Slides API lets you modify the text content of a shape. You can remove individual ranges of text, and you can insert text at a specific location.

Use InsertTextRequest and DeleteTextRequest to perform these operations.

Replacing a specific region of text consists of a deletion and then an insertion, which you can perform using the following steps:

  1. Identify the page element that contains the text.
  2. Identify the start and end position of the text to be replaced.
  3. Call batchUpdate with the following two requests:
    1. DeleteTextRequest, specifying the range of text to delete.
    2. InsertTextRequest, specifying the same start position as well as the text string to be inserted.

To ensure atomicity when you replace text this way, make sure to include both requests in the same batchUpdate call. This is shown in the following example, which replaces all the text in a shape with new text:

Apps Script

slides/api/Snippets.gs
// Remove existing text in the shape, then insert new text.
var requests = [{
  deleteText: {
    objectId: shapeId,
    textRange: {
      type: 'ALL'
    }
  }
}, {
  insertText: {
    objectId: shapeId,
    insertionIndex: 0,
    text: replacementText
  }
}];
// Execute the requests.
var batchUpdateResponse = Slides.Presentations.batchUpdate({
  requests: requests
}, presentationId);
console.log('Replaced text in shape with ID: %s', shapeId);

Go

slides/snippets/presentations.go
// Remove existing text in the shape, then insert the new text.
requests := []*slides.Request{{	DeleteText: &slides.DeleteTextRequest{
		ObjectId: shapeId,
		TextRange: &slides.Range{
			Type: "All",
		},
	},
}, {
	InsertText: &slides.InsertTextRequest{
		ObjectId:       shapeId,
		InsertionIndex: 0,
		Text:           replacementText,
	},
}}
// Execute the requests.
body := &slides.BatchUpdatePresentationRequest{Requests: requests}
response, _ := slidesService.Presentations.BatchUpdate(presentationId, body).Do()
fmt.Printf("Replaced text in shape with ID: %s", shapeId)

Java

slides/snippets/src/main/java/Snippets.java
// Remove existing text in the shape, then insert the new text.
List<Request> requests = new ArrayList<>();
requests.add(new Request()
        .setDeleteText(new DeleteTextRequest()
                .setObjectId(shapeId)
                .setTextRange(new Range()
                    .setType("ALL"))));
requests.add(new Request()
        .setInsertText(new InsertTextRequest()
                .setObjectId(shapeId)
                .setInsertionIndex(0)
                .setText(replacementText)));

// Execute the requests.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();

System.out.println("Replaced text in shape with ID: " + shapeId);

JavaScript

slides/snippets/snippets.js
// Remove existing text in the shape, then insert new text.
var requests = [{
  deleteText: {
    objectId: shapeId,
    textRange: {
      type: 'ALL'
    }
  }
}, {
  insertText: {
    objectId: shapeId,
    insertionIndex: 0,
    text: replacementText
  }
}];

// Execute the requests.
gapi.client.slides.presentations.batchUpdate({
  presentationId: presentationId,
  requests: requests
}).then((batchUpdateResponse) => {
  console.log(`Replaced text in shape with ID: ${shapeId}`)
});

Node.js

slides/snippets/snippets.js
// Remove existing text in the shape, then insert new text.
let requests = [{
  deleteText: {
    objectId: shapeId,
    textRange: {
      type: 'ALL',
    },
  },
}, {
  insertText: {
    objectId: shapeId,
    insertionIndex: 0,
    text: replacementText,
  },
}];
// Execute the requests.
this.slidesService.presentations.batchUpdate({
  presentationId,
  resource: {
      requests,
    },
}, (err, batchUpdateResponse) => {
  console.log(`Replaced text in shape with ID: ${shapeId}`);
});

PHP

slides/snippets/src/SlidesSnippets.php
<?php
// Remove existing text in the shape, then insert new text.
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
    'deleteText' => array(
        'objectId' => $shapeId,
        'textRange' => array(
            'type' => 'ALL'
        )
    )
));
$requests[] = new Google_Service_Slides_Request(array(
    'insertText' => array(
        'objectId' => $shapeId,
        'insertionIndex' => 0,
        'text' => $replacementText
    )
));

// Execute the requests.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
    'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
printf("Replaced text in shape with ID: %s", $shapeId);

Python

slides/snippets/slides_snippets.py
# Remove existing text in the shape, then insert new text.
requests = []
requests.append({
    'deleteText': {
        'objectId': shape_id,
        'textRange': {
            'type': 'ALL'
        }
    }
})
requests.append({
    'insertText': {
        'objectId': shape_id,
        'insertionIndex': 0,
        'text': replacement_text
    }
})

# Execute the requests.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(
    presentationId=presentation_id, body=body).execute()
print('Replaced text in shape with ID: {0}'.format(shape_id))

Ruby

slides/snippets/lib/file_snippets.rb
# Remove existing text in the shape, then insert new text.
requests = [] << {
  delete_text: {
    object_id_prop: shape_id,
    text_range:     {
      type: 'ALL'
    }
  }
} << {
  insert_text: {
    object_id_prop:  shape_id,
    insertion_index: 0,
    text:            replacement_text
  }
}

# Execute the requests.
req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests)
response = slides_service.batch_update_presentation(
  presentation_id,
  req
)
puts "Replaced text in shape with ID: #{shape_id}"

Changing character formatting

Character formatting determines the rendering of text characters in your presentation, including typeface, color, and hyperlinking.

The concepts page Text Structure and Styling describes how the Slides API represents text styling information.

To change the character formatting of text, use batchUpdate with the UpdateTextStyleRequest. You need to provide the ID of the shape or table cell that contains the text, as well as a Range that includes the following information:

  • The specifier FIXED_RANGE, together with the start and end indexes that define the text range you want to style.
  • The specifier FROM_START_INDEX, together with a start index that defines the beginning of the text range you want to style.
  • The specifier ALL, with no indexes, to style all the text in the target shape.

The following example performs several text styling operations on the text that's contained in a shape:

  • Sets the font of characters 0-4 to bold italics.
  • Sets the color of characters 5-9 to blue 14-pt Times New Roman font.
  • Hyperlinks characters 10-14 to www.example.com.

A straightforward way to do this is by building a list of requests and then using one batchUpdate call:

Apps Script

slides/api/Snippets.gs
// Update the text style so that the first 5 characters are bolded
// and italicized, the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next 5 are hyperlinked.
var requests = [{
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 0,
      endIndex: 5
    },
    style: {
      bold: true,
      italic: true
    },
    fields: 'bold,italic'
  }
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 5,
      endIndex: 10
    },
    style: {
      fontFamily: 'Times New Roman',
      fontSize: {
        magnitude: 14,
        unit: 'PT'
      },
      foregroundColor: {
        opaqueColor: {
          rgbColor: {
            blue: 1.0,
            green: 0.0,
            red: 0.0
          }
        }
      }
    },
    fields: 'foregroundColor,fontFamily,fontSize'
  }
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 10,
      endIndex: 15
    },
    style: {
      link: {
        url: 'www.example.com'
      }
    },
    fields: 'link'
  }
}];

// Execute the requests.
var batchUpdateResponse = Slides.Presentations.batchUpdate({
  requests: requests
}, presentationId);
console.log('Updated the text style for shape with ID: %s', shapeId);

Go

slides/snippets/presentations.go
// Update the text style so that the first 5 characters are bolded
// and italicized, and the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next five are hyperlinked.
requests := []*slides.Request{{	UpdateTextStyle: &slides.UpdateTextStyleRequest{
		ObjectId: shapeId,
		TextRange: &slides.Range{
			Type:            "FIXED_RANGE",
			StartIndex:      0,
			EndIndex:        5,
			ForceSendFields: []string{"StartIndex"},
		},
		Style: &slides.TextStyle{
			Bold:   true,
			Italic: true,
		},
		Fields: "bold,italic",
	},
}, {
	UpdateTextStyle: &slides.UpdateTextStyleRequest{
		ObjectId: shapeId,
		TextRange: &slides.Range{
			Type:       "FIXED_RANGE",
			StartIndex: 5,
			EndIndex:   10,
		},
		Style: &slides.TextStyle{
			FontFamily: "Times New Roman",
			FontSize: &slides.Dimension{
				Magnitude: 14.0,
				Unit:      "PT",
			},
			ForegroundColor: &slides.OptionalColor{
				OpaqueColor: &slides.OpaqueColor{
					RgbColor: &slides.RgbColor{
						Blue:  1.0,
						Green: 0.0,
						Red:   0.0,
					},
				},
			},
		},
		Fields: "foregroundColor,fontFamily,fontSize",
	},
}, {
	UpdateTextStyle: &slides.UpdateTextStyleRequest{
		ObjectId: shapeId,
		TextRange: &slides.Range{
			Type:       "FIXED_RANGE",
			StartIndex: 10,
			EndIndex:   15,
		},
		Style: &slides.TextStyle{
			Link: &slides.Link{
				Url: "www.example.com",
			},
		},
		Fields: "link",
	},
}}
// Execute the requests.
body := &slides.BatchUpdatePresentationRequest{Requests: requests}
response, _ := slidesService.Presentations.BatchUpdate(presentationId, body).Do()
fmt.Printf("Updated text style for shape with ID: %s", shapeId)

Java

slides/snippets/src/main/java/Snippets.java
// Update the text style so that the first 5 characters are bolded
// and italicized, and the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next five are hyperlinked.
List<Request> requests = new ArrayList<>();
requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setObjectId(shapeId)
                .setTextRange(new Range()
                        .setType("FIXED_RANGE")
                        .setStartIndex(0)
                        .setEndIndex(5))
                .setStyle(new TextStyle()
                        .setBold(true)
                        .setItalic(true))
                .setFields("bold,italic")));
requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setObjectId(shapeId)
                .setTextRange(new Range()
                        .setType("FIXED_RANGE")
                        .setStartIndex(5)
                        .setEndIndex(10))
                .setStyle(new TextStyle()
                        .setFontFamily("Times New Roman")
                        .setFontSize(new Dimension()
                                .setMagnitude(14.0)
                                .setUnit("PT"))
                        .setForegroundColor(new OptionalColor()
                                .setOpaqueColor(new OpaqueColor()
                                        .setRgbColor(new RgbColor()
                                                .setBlue(1.0F)
                                                .setGreen(0.0F)
                                                .setRed(0.0F)))))
                .setFields("foregroundColor,fontFamily,fontSize")));
requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setObjectId(shapeId)
                .setTextRange(new Range()
                        .setType("FIXED_RANGE")
                        .setStartIndex(10)
                        .setEndIndex(15))
                .setStyle(new TextStyle()
                        .setLink(new Link()
                                .setUrl("www.example.com")))
                .setFields("link")));

// Execute the requests.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();

System.out.println("Updated text style for shape with ID: " + shapeId);

JavaScript

slides/snippets/snippets.js
// Update the text style so that the first 5 characters are bolded
// and italicized, the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next 5 are hyperlinked.
var requests = [{
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 0,
      endIndex: 5
    },
    style: {
      bold: true,
      italic: true
    },
    fields: 'bold,italic'
  }
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 5,
      endIndex: 10
    },
    style: {
      fontFamily: 'Times New Roman',
      fontSize: {
        magnitude: 14,
        unit: 'PT'
      },
      foregroundColor: {
        opaqueColor: {
          rgbColor: {
            blue: 1.0,
            green: 0.0,
            red: 0.0
          }
        }
      }
    },
    fields: 'foregroundColor,fontFamily,fontSize'
  }
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 10,
      endIndex: 15
    },
    style: {
      link: {
        url: 'www.example.com'
      }
    },
    fields: 'link'
  }
}];

// Execute the requests.
gapi.client.slides.presentations.batchUpdate({
  presentationId: presentationId,
  requests: requests
}).then((batchUpdateResponse) => {
  console.log(`Updated the text style for shape with ID: ${shapeId}`);
});

Node.js

slides/snippets/snippets.js
// Update the text style so that the first 5 characters are bolded
// and italicized, the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next 5 are hyperlinked.
let requests = [{
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 0,
      endIndex: 5,
    },
    style: {
      bold: true,
      italic: true,
    },
    fields: 'bold,italic',
  },
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 5,
      endIndex: 10,
    },
    style: {
      fontFamily: 'Times New Roman',
      fontSize: {
        magnitude: 14,
        unit: 'PT',
      },
      foregroundColor: {
        opaqueColor: {
          rgbColor: {
            blue: 1.0,
            green: 0.0,
            red: 0.0,
          },
        },
      },
    },
    fields: 'foregroundColor,fontFamily,fontSize',
  },
}, {
  updateTextStyle: {
    objectId: shapeId,
    textRange: {
      type: 'FIXED_RANGE',
      startIndex: 10,
      endIndex: 15,
    },
    style: {
      link: {
        url: 'www.example.com',
      },
    },
    fields: 'link',
  },
}];

// Execute the requests.
this.slidesService.presentations.batchUpdate({
  presentationId,
  resource: {
    requests,
  },
}, (err, batchUpdateResponse) => {
  console.log(`Updated the text style for shape with ID: ${shapeId}`);
});

PHP

slides/snippets/src/SlidesSnippets.php
<?php
// Update the text style so that the first 5 characters are bolded
// and italicized, the next 5 are displayed in blue 14 pt Times
// New Roman font, and the next 5 are hyperlinked.
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
    'updateTextStyle' => array(
        'objectId' => $shapeId,
        'textRange' => array(
            'type' => 'FIXED_RANGE',
            'startIndex' => 0,
            'endIndex' => 5
        ),
        'style' => array(
            'bold' => true,
            'italic' => true
        ),
        'fields' => 'bold,italic'
    )
));
$requests[] = new Google_Service_Slides_Request(array(
    'updateTextStyle' => array(
        'objectId' => $shapeId,
        'textRange' => array(
            'type' => 'FIXED_RANGE',
            'startIndex' => 5,
            'endIndex' => 10
        ),
        'style' => array(
            'fontFamily' => 'Times New Roman',
            'fontSize' => array(
                'magnitude' => 14,
                'unit' => 'PT'
            ),
            'foregroundColor' => array(
                'opaqueColor' => array(
                    'rgbColor' => array(
                        'blue' => 1.0,
                        'green' => 0.0,
                        'red' => 0.0
                    )
                )
            )
        ),
        'fields' => 'foregroundColor,fontFamily,fontSize'
    )
));
$requests[] = new Google_Service_Slides_Request(array(
    'updateTextStyle' => array(
        'objectId' => $shapeId,
        'textRange' => array(
            'type' => 'FIXED_RANGE',
            'startIndex' => 10,
            'endIndex' => 15
        ),
        'style' => array(
            'link' => array(
                'url' => 'www.example.com'
            )
        ),
        'fields' => 'link'
    )
));

// Execute the requests.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
    'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
printf("Updated the text style for shape with ID: %s", $shapeId);

Python

slides/snippets/slides_snippets.py
# Update the text style so that the first 5 characters are bolded
# and italicized, the next 5 are displayed in blue 14 pt Times
# New Roman font, and the next 5 are hyperlinked.
requests = [
    {
        'updateTextStyle': {
            'objectId': shape_id,
            'textRange': {
                'type': 'FIXED_RANGE',
                'startIndex': 0,
                'endIndex': 5
            },
            'style': {
                'bold': True,
                'italic': True
            },
            'fields': 'bold,italic'
        }
    },
    {
        'updateTextStyle': {
            'objectId': shape_id,
            'textRange': {
                'type': 'FIXED_RANGE',
                'startIndex': 5,
                'endIndex': 10
            },
            'style': {
                'fontFamily': 'Times New Roman',
                'fontSize': {
                    'magnitude': 14,
                    'unit': 'PT'
                },
                'foregroundColor': {
                    'opaqueColor': {
                        'rgbColor': {
                            'blue': 1.0,
                            'green': 0.0,
                            'red': 0.0
                        }
                    }
                }
            },
            'fields': 'foregroundColor,fontFamily,fontSize'
        }
    },
    {
        'updateTextStyle': {
            'objectId': shape_id,
            'textRange': {
                'type': 'FIXED_RANGE',
                'startIndex': 10,
                'endIndex': 15
            },
            'style': {
                'link': {
                    'url': 'www.example.com'
                }
            },
            'fields': 'link'
        }
    }
]

# Execute the requests.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(
    presentationId=presentation_id, body=body).execute()
print('Updated the text style for shape with ID: {0}'.format(shape_id))

Ruby

slides/snippets/lib/file_snippets.rb
# Update the text style so that the first 5 characters are bolded
# and italicized, the next 5 are displayed in blue 14 pt Times
# New Roman font, and the next 5 are hyperlinked.
requests = [] << {
  update_text_style: {
    object_id_prop: shape_id,
    text_range:     {
      type:        'FIXED_RANGE',
      start_index: 0,
      end_index:   5
    },
    style:          {
      bold:   true,
      italic: true
    },
    fields:         'bold,italic'
  }
} << {
  update_text_style: {
    object_id_prop: shape_id,
    text_range:     {
      type:        'FIXED_RANGE',
      start_index: 5,
      end_index:   10
    },
    style:          {
      font_family:      'Times New Roman',
      font_size:        {
        magnitude: 14,
        unit:      'PT'
      },
      foreground_color: {
        opaque_color: {
          rgb_color: {
            blue:  1.0,
            green: 0.0,
            red:   0.0
          }
        }
      }
    },
    fields:         'foreground_color,font_family,font_size'
  }
} << {
  update_text_style: {
    object_id_prop: shape_id,
    text_range:     {
      type:        'FIXED_RANGE',
      start_index: 10,
      end_index:   15
    },
    style:          {
      link: {
        url: 'www.example.com'
      }
    },
    fields:         'link'
  }
}

# Execute the requests.
req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests)
response = slides_service.batch_update_presentation(presentation_id, req)
puts "Updated the text style for shape with ID: #{shape_id}"

Changing paragraph formatting

Paragraph formatting determines how blocks of text are rendered in your presentation, including alignment, indentation, and list ornamentation.

The concepts page Text Structure and Styling describes how the Slides API represents paragraph styling information.

The Slides API supports updating paragraph styles, converting plain paragraphs to bulleted lists, and removing bullets from paragraphs.

Converting paragraphs to a list

A common paragraph formatting operation is converting paragraphs into a bulleted list. The following example converts all the paragraphs of a shape to a bulleted list, and specifies an explicit bullet glyph to use.

Apps Script

slides/api/Snippets.gs
// Add arrow-diamond-disc bullets to all text in the shape.
var requests = [{
  createParagraphBullets: {
    objectId: shapeId,
    textRange: {
      type: 'ALL'
    },
    bulletPreset: 'BULLET_ARROW_DIAMOND_DISC'
  }
}];

// Execute the requests.
var batchUpdateResponse = Slides.Presentations.batchUpdate({
  requests: requests
}, presentationId);
console.log('Added bullets to text in shape with ID: %s', shapeId);

Go

slides/snippets/presentations.go
// Add arrow-diamond-disc bullets to all text in the shape.
requests := []*slides.Request{{	CreateParagraphBullets: &slides.CreateParagraphBulletsRequest{
		ObjectId: shapeId,
		TextRange: &slides.Range{
			Type: "ALL",
		},
		BulletPreset: "BULLET_ARROW_DIAMOND_DISC",
	},
}}
// Execute the requests.
body := &slides.BatchUpdatePresentationRequest{Requests: requests}
response, _ := slidesService.Presentations.BatchUpdate(presentationId, body).Do()
fmt.Printf("Added a linked Sheets chart with ID %s", shapeId)

Java

slides/snippets/src/main/java/Snippets.java
// Add arrow-diamond-disc bullets to all text in the shape.
List<Request> requests = new ArrayList<>();
requests.add(new Request()
        .setCreateParagraphBullets(new CreateParagraphBulletsRequest()
                .setObjectId(shapeId)
                .setTextRange(new Range()
                        .setType("ALL"))
                .setBulletPreset("BULLET_ARROW_DIAMOND_DISC")));

// Execute the request.
BatchUpdatePresentationRequest body =
        new BatchUpdatePresentationRequest().setRequests(requests);
BatchUpdatePresentationResponse response =
        slidesService.presentations().batchUpdate(presentationId, body).execute();
System.out.println("Added bullets to text in shape with ID: " + shapeId);

JavaScript

slides/snippets/snippets.js
// Add arrow-diamond-disc bullets to all text in the shape.
var requests = [{
  createParagraphBullets: {
    objectId: shapeId,
    textRange: {
      type: 'ALL'
    },
    bulletPreset: 'BULLET_ARROW_DIAMOND_DISC'
  }
}];

// Execute the requests.
gapi.client.slides.presentations.batchUpdate({
  presentationId: presentationId,
  requests: requests
}).then((batchUpdateResponse) => {
  console.log(`Added bullets to text in shape with ID: ${shapeId}`);
});

Node.js

slides/snippets/snippets.js
// Add arrow-diamond-disc bullets to all text in the shape.
let requests = [{
  createParagraphBullets: {
    objectId: shapeId,
    textRange: {
      type: 'ALL',
    },
    bulletPreset: 'BULLET_ARROW_DIAMOND_DISC',
  },
}];

// Execute the requests.
this.slidesService.presentations.batchUpdate({
  presentationId,
  resource: {
    requests,
  },
}, (err, batchUpdateResponse) => {
  console.log(`Added bullets to text in shape with ID: ${shapeId}`);
});

PHP

slides/snippets/src/SlidesSnippets.php
<?php
// Add arrow-diamond-disc bullets to all text in the shape.
$requests = array();
$requests[] = new Google_Service_Slides_Request(array(
    'createParagraphBullets' => array(
        'objectId' => $shapeId,
        'textRange' => array(
            'type' => 'ALL'
        ),
        'bulletPreset' => 'BULLET_ARROW_DIAMOND_DISC'
    )
));

// Execute the request.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
    'requests' => $requests
));
$response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest);
printf("Added bullets to text in shape with ID: %s", $shapeId);

Python

slides/snippets/slides_snippets.py
# Add arrow-diamond-disc bullets to all text in the shape.
requests = [
    {
        'createParagraphBullets': {
            'objectId': shape_id,
            'textRange': {
                'type': 'ALL'
            },
            'bulletPreset': 'BULLET_ARROW_DIAMOND_DISC'
        }
    }
]

# Execute the requests.
body = {
    'requests': requests
}
response = slides_service.presentations().batchUpdate(
    presentationId=presentation_id, body=body).execute()
print('Added bullets to text in shape with ID: {0}'.format(shape_id))

Ruby

slides/snippets/lib/file_snippets.rb
# Add arrow-diamond-disc bullets to all text in the shape.
requests = [] << {
  create_paragraph_bullets: {
    object_id_prop: shape_id,
    text_range:     {
      type: 'ALL'
    },
    bulletPreset:   'BULLET_ARROW_DIAMOND_DISC'
  }
}

# Execute the requests.
req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests)
response = slides_service.batch_update_presentation(presentation_id, req)
puts "Added bullets to text in shape with ID: #{shape_id}"