编辑文本和设置文本样式

本页介绍了如何使用 Slides API 编辑演示文稿中的文本并设置其样式。

关于文本

演示文稿中的文字始终包含在形状或表格单元格中。 借助该 API,您可以通过多种方式修改此文本:

  • 您可以在演示文稿中插入、删除或替换文字。
  • 您可以添加段落格式来创建项目符号列表。
  • 您可以更改字符格式,例如加粗、斜体、颜色、字号或超链接。

如需大致了解如何在 Slides API 中设置文本样式,请参阅概念页面文本结构和样式。您还可以观看上面的视频,了解一个完整的示例 (Python),其中结合了下面几个部分中的多种格式设置概念。

插入、删除或替换文字

您可以通过以下两种方式使用 Slides API 替换演示文稿中的文本:执行全局搜索和替换,或明确删除和添加文本。这两种方式都使用 batchUpdate 方法,但请求类型不同。

全局搜索和替换

使用 ReplaceAllTextRequest 在整个演示中进行全局搜索和替换。

合并数据指南的文本合并部分提供了一个示例,说明了如何使用此请求类型。

替换形状中的文字

您可以使用 Slides API 修改形状的文本内容。您可以移除单个文本范围,也可以在特定位置插入文本。

使用 InsertTextRequestDeleteTextRequest 执行这些操作。

替换特定文本区域包括删除和插入两个步骤,您可以使用以下步骤来执行此操作:

  1. 确定包含相应文本的网页元素。
  2. 确定要替换的文本的起始位置和结束位置。
  3. 使用以下两个请求调用 batchUpdate
    1. DeleteTextRequest,用于指定要删除的文本范围。
    2. InsertTextRequest,指定相同的起始位置以及要插入的文本字符串。

如需确保以这种方式替换文本时具有原子性,请务必在同一 batchUpdate 调用中包含这两个请求。以下示例展示了如何将形状中的所有文本替换为新文本:

Apps 脚本

slides/api/Snippets.gs
/**  * Remove existing text in the shape, then insert new text.  * @param {string} presentationId  * @param {string?} shapeId  * @param {string} replacementText  * @returns {*}  */ function simpleTextReplace(presentationId, shapeId, replacementText) {   const requests = [{     deleteText: {       objectId: shapeId,       textRange: {         type: 'ALL'       }     }   }, {     insertText: {       objectId: shapeId,       insertionIndex: 0,       text: replacementText     }   }];    // Execute the requests.   try {     const batchUpdateResponse = Slides.Presentations.batchUpdate({       requests: requests     }, presentationId);     console.log('Replaced text in shape with ID: %s', shapeId);      return batchUpdateResponse;   } catch (err) {     // TODO (Developer) - Handle exception     console.log('Failed with error: %s', err.error);   } };

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/SimpleTextReplace.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.slides.v1.Slides; import com.google.api.services.slides.v1.SlidesScopes; import com.google.api.services.slides.v1.model.BatchUpdatePresentationRequest; import com.google.api.services.slides.v1.model.BatchUpdatePresentationResponse; import com.google.api.services.slides.v1.model.DeleteTextRequest; import com.google.api.services.slides.v1.model.InsertTextRequest; import com.google.api.services.slides.v1.model.Range; import com.google.api.services.slides.v1.model.Request; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials;  import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List;  /* Class to demonstrate the use of Slides Replace Text API */ public class SimpleTextReplace {   /**    * Remove existing text in the shape, then insert new text.    *    * @param presentationId  - id of the presentation.    * @param shapeId         - id of the shape.    * @param replacementText - New replacement text.    * @return response    * @throws IOException - if credentials file not found.    */   public static BatchUpdatePresentationResponse simpleTextReplace(       String presentationId, String shapeId, String replacementText) throws IOException {         /* Load pre-authorized user credentials from the environment.            TODO(developer) - See https://developers.google.com/identity for             guides on implementing OAuth2 for your application. */     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()         .createScoped(Collections.singleton(SlidesScopes.PRESENTATIONS));     HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(         credentials);      // Create the slides API client     Slides service = new Slides.Builder(new NetHttpTransport(),         GsonFactory.getDefaultInstance(),         requestInitializer)         .setApplicationName("Slides samples")         .build();      // 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)));      BatchUpdatePresentationResponse response = null;     try {       // Execute the requests.       BatchUpdatePresentationRequest body =           new BatchUpdatePresentationRequest().setRequests(requests);       response = service.presentations().batchUpdate(presentationId, body).execute();       System.out.println("Replaced text in shape with ID: " + shapeId);     } catch (GoogleJsonResponseException e) {       // TODO(developer) - handle error appropriately       GoogleJsonError error = e.getDetails();       if (error.getCode() == 400) {         System.out.printf("Shape not found with id '%s'.\n", shapeId);       } else if (error.getCode() == 404) {         System.out.printf("Presentation not found with id '%s'.\n", presentationId);       } else {         throw e;       }     }     return response;   } }

JavaScript

slides/snippets/slides_simple_text_replace.js
function simpleTextReplace(presentationId, shapeId, replacementText, callback) {   // Remove existing text in the shape, then insert new text.   const requests = [{     deleteText: {       objectId: shapeId,       textRange: {         type: 'ALL',       },     },   }, {     insertText: {       objectId: shapeId,       insertionIndex: 0,       text: replacementText,     },   }];   // Execute the requests.   try {     gapi.client.slides.presentations.batchUpdate({       presentationId: presentationId,       requests: requests,     }).then((batchUpdateResponse) => {       console.log(`Replaced text in shape with ID: ${shapeId}`);       if (callback) callback(batchUpdateResponse.result);     });   } catch (err) {     document.getElementById('content').innerText = err.message;     return;   } }

Node.js

slides/snippets/slides_simple_text_replace.js
/**  * Replaces text in the provided shape ID.  * @param {string} presentationId The presentation ID.  * @param {string} shapeId The shape ID to delete existing text and insert new text into.  * @param {string} replacementText The new replacement text.  */ async function simpleTextReplace(presentationId, shapeId, replacementText) {   const {GoogleAuth} = require('google-auth-library');   const {google} = require('googleapis');    const auth = new GoogleAuth({     scopes: 'https://www.googleapis.com/auth/presentations',   });    const service = google.slides({version: 'v1', auth});   // Remove existing text in the shape, then insert new text.   const requests = [     {       deleteText: {         objectId: shapeId,         textRange: {           type: 'ALL',         },       },     },     {       insertText: {         objectId: shapeId,         insertionIndex: 0,         text: replacementText,       },     },   ];   // Execute the requests.   try {     const batchUpdateResponse = await service.presentations.batchUpdate({       presentationId,       resource: {         requests,       },     });     console.log(`Replaced text in shape with ID: ${shapeId}`);     return batchUpdateResponse.data;   } catch (err) {     // TODO (developer) - Handle exception     throw err;   } }

PHP

slides/snippets/src/SlidesSimpleTextReplace.php
<?php use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\Request;  function simpleTextReplace($presentationId, $shapeId, $replacementText) {     /* Load pre-authorized user credentials from the environment.        TODO(developer) - See https://developers.google.com/identity for         guides on implementing OAuth2 for your application. */     $client = new Google\Client();     $client->useApplicationDefaultCredentials();     $client->addScope(Google\Service\Drive::DRIVE);     $slidesService = new Google_Service_Slides($client);     // 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);     return $response; }

Python

slides/snippets/slides_simple_text_replace.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError   def simple_text_replace(presentation_id, shape_id, replacement_text):   """   Run simple_text_replace the user has access to.   Load pre-authorized user credentials from the environment.   TODO(developer) - See https://developers.google.com/identity   for guides on implementing OAuth2 for the application.   """   creds, _ = google.auth.default()   # pylint: disable=maybe-no-member   try:     slides_service = build("slides", "v1", credentials=creds)     # 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(f"Replaced text in shape with ID: {shape_id}")     return response   except HttpError as error:     print(f"An error occurred: {error}")     print("Text is not merged")     return error   if __name__ == "__main__":   # Put the presentation_id, shape_id and replacement_text   simple_text_replace(       "10QnVUx1X2qHsL17WUidGpPh_SQhXYx40CgIxaKk8jU4",       "MyTextBox_6",       "GWSpace_now",   )

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}"

更改字符格式

字符格式决定了演示文稿中文字字符的呈现方式,包括字体、颜色和超链接。

概念页面文本结构和样式介绍了 Slides API 如何表示文本样式信息。

如需更改文本的字符格式,请将 batchUpdateUpdateTextStyleRequest 搭配使用。 您需要提供包含文本的形状或表格单元格的 ID,以及包含以下信息的 Range

  • 说明符 FIXED_RANGE,以及用于定义要设置样式的文本范围的起始和结束索引。
  • 说明符 FROM_START_INDEX,以及用于定义要设置样式的文本范围的开头的起始索引。
  • 不带索引的说明符 ALL,用于设置目标形状中所有文本的样式。

以下示例对形状中包含的文本执行多项文本样式设置操作:

  • 将字符 0-4 的字体设置为粗斜体。
  • 将第 5-9 个字符的颜色设置为 blue,字体设置为 14 磅 Times New Roman。
  • 将第 10-14 个字符超链接到 www.example.com

一种简单的方法是构建请求列表,然后使用一个 batchUpdate 调用:

Apps 脚本

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.  * @param {string} presentationId  * @param {string} shapeId  * @returns {*}  */ function textStyleUpdate(presentationId, shapeId) {   const 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.   try {     const batchUpdateResponse = Slides.Presentations.batchUpdate({       requests: requests     }, presentationId);     console.log('Updated the text style for shape with ID: %s', shapeId);      return batchUpdateResponse;   } catch (err) {     // TODO (Developer) - Handle exception     console.log('Failed with error: %s', err.error);   } };

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:      ptrInt64(0), 			EndIndex:        ptrInt64(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: ptrInt64(5), 			EndIndex:   ptrInt64(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: ptrInt64(10), 			EndIndex:   ptrInt64(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/TextStyleUpdate.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.slides.v1.Slides; import com.google.api.services.slides.v1.SlidesScopes; import com.google.api.services.slides.v1.model.BatchUpdatePresentationRequest; import com.google.api.services.slides.v1.model.BatchUpdatePresentationResponse; import com.google.api.services.slides.v1.model.Dimension; import com.google.api.services.slides.v1.model.Link; import com.google.api.services.slides.v1.model.OpaqueColor; import com.google.api.services.slides.v1.model.OptionalColor; import com.google.api.services.slides.v1.model.Range; import com.google.api.services.slides.v1.model.Request; import com.google.api.services.slides.v1.model.RgbColor; import com.google.api.services.slides.v1.model.TextStyle; import com.google.api.services.slides.v1.model.UpdateTextStyleRequest; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials;  import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List;  /* Class to demonstrate the use of Slide Text Structure and Styling API */ public class TextStyleUpdate {   /**    * Styles text in the shape.    *    * @param presentationId - id of the presentation.    * @param shapeId        - id of the shape.    * @return shape id    * @throws IOException - if credentials file not found.    */   public static BatchUpdatePresentationResponse textStyleUpdate(String presentationId,                                                                 String shapeId)       throws IOException {         /* Load pre-authorized user credentials from the environment.            TODO(developer) - See https://developers.google.com/identity for             guides on implementing OAuth2 for your application. */     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()         .createScoped(Collections.singleton(SlidesScopes.PRESENTATIONS));     HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(         credentials);      // Create the slides API client     Slides service = new Slides.Builder(new NetHttpTransport(),         GsonFactory.getDefaultInstance(),         requestInitializer)         .setApplicationName("Slides samples")         .build();      // 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")));      BatchUpdatePresentationResponse response = null;     try {       // Execute the requests.       BatchUpdatePresentationRequest body =           new BatchUpdatePresentationRequest().setRequests(requests);       response = service.presentations().batchUpdate(presentationId, body).execute();       System.out.println("Updated text style for shape with ID: " + shapeId);     } catch (GoogleJsonResponseException e) {       // TODO(developer) - handle error appropriately       GoogleJsonError error = e.getDetails();       if (error.getCode() == 400) {         System.out.printf("Shape not found with id '%s'.\n", shapeId);       } else if (error.getCode() == 404) {         System.out.printf("Presentation not found with id '%s'.\n", presentationId);       } else {         throw e;       }     }     return response;   } }

JavaScript

slides/snippets/slides_text_style_update.js
function textStyleUpdate(presentationId, shapeId, callback) {   // 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.   const 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.   try {     gapi.client.slides.presentations.batchUpdate({       presentationId: presentationId,       requests: requests,     }).then((batchUpdateResponse) => {       console.log(`Updated the text style for shape with ID: ${shapeId}`);       if (callback) callback(batchUpdateResponse.result);     });   } catch (err) {     document.getElementById('content').innerText = err.message;     return;   } }

Node.js

slides/snippets/slides_text_style_update.js
/**  * Updates text style for a specific presentation's shape ID.  * @param {string} presentationId The presentation ID.  * @param {string} shapeId The shape ID.  */ async function textStyleUpdate(presentationId, shapeId) {   // 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.   const {GoogleAuth} = require('google-auth-library');   const {google} = require('googleapis');    const auth = new GoogleAuth({     scopes: 'https://www.googleapis.com/auth/presentations',   });    const service = google.slides({version: 'v1', auth});    const 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.   try {     const batchUpdateResponse = await service.presentations.batchUpdate({       presentationId,       resource: {         requests,       },     });     console.log(`Updated the text style for shape with ID: ${shapeId}`);     return batchUpdateResponse.data;   } catch (err) {     // TODO (developer) - Handle exceptions     throw err;   } }

PHP

slides/snippets/src/SlidesTextStyleUpdate.php
<?php  use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\Request; use Google\Service\Slides\BatchUpdatePresentationRequest;   function textStyleUpdate($presentationId, $shapeId) {     /* Load pre-authorized user credentials from the environment.        TODO(developer) - See https://developers.google.com/identity for         guides on implementing OAuth2 for your application. */     $client = new Google\Client();     $client->useApplicationDefaultCredentials();     $client->addScope(Google\Service\Drive::DRIVE);     $slidesService = new Google_Service_Slides($client);     $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);     return $response; }

Python

slides/snippets/slides_text_style_update.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError   def text_style_update(presentation_id, shape_id):   """   create_sheets_chart the user has access to.   Load pre-authorized user credentials from the environment.   TODO(developer) - See https://developers.google.com/identity   for guides on implementing OAuth2 for the application.   """   creds, _ = google.auth.default()   # pylint: disable=maybe-no-member   try:     service = build("slides", "v1", credentials=creds)     # 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 = (         service.presentations()         .batchUpdate(presentationId=presentation_id, body=body)         .execute()     )     print(f"Updated the text style for shape with ID:{shape_id}")      return response   except HttpError as error:     print(f"An error occurred: {error}")     return error   if __name__ == "__main__":   # Put the presentation_id, shape_id of slides   # to be submitted.   text_style_update(       "10QnVUx1X2qHsL17WUidGpPh_SQhXYx40CgIxaKk8jU4", "MyTextBox_9"   )

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}"

更改段落格式

段落格式决定了文本块在演示文稿中的呈现方式,包括对齐方式、缩进和列表装饰。

概念页面文本结构和样式设置介绍了 [[slides_api_short]] 如何表示段落样式信息。

Slides API 支持更新段落样式、将纯段落转换为项目符号列表,以及从段落中移除项目符号。

将段落转换为列表

一种常见的段落格式设置操作是将段落转换为项目符号列表。以下示例将形状的所有段落转换为项目符号列表,并指定要使用的明确的项目符号字形。

Apps 脚本

slides/api/Snippets.gs
/**  * Add arrow-diamond-disc bullets to all text in the shape.  */ function createBulletedText(presentationId, shapeId) {   const requests = [{     createParagraphBullets: {       objectId: shapeId,       textRange: {         type: 'ALL'       },       bulletPreset: 'BULLET_ARROW_DIAMOND_DISC'     }   }];    // Execute the requests.   try {     const batchUpdateResponse = Slides.Presentations.batchUpdate({       requests: requests     }, presentationId);     console.log('Added bullets to text in shape with ID: %s', shapeId);      return batchUpdateResponse;   } catch (err) {     // TODO (Developer) - Handle exception     console.log('Failed with error: %s', err.error);   } };

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/CreateBulletedText.java
import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.slides.v1.Slides; import com.google.api.services.slides.v1.SlidesScopes; import com.google.api.services.slides.v1.model.BatchUpdatePresentationRequest; import com.google.api.services.slides.v1.model.BatchUpdatePresentationResponse; import com.google.api.services.slides.v1.model.CreateParagraphBulletsRequest; import com.google.api.services.slides.v1.model.Range; import com.google.api.services.slides.v1.model.Request; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials;  import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List;  /* Class to demonstrate the use of Slide Create Bulleted Text API */ public class CreateBulletedText {   /**    * Add arrow-diamond-disc bullets to all text in the shape.    *    * @param presentationId - id of the presentation.    * @param shapeId        - id of the shape.    * @return response    * @throws IOException - if credentials file not found.    */   public static BatchUpdatePresentationResponse createBulletedText(String presentationId,                                                                    String shapeId)       throws IOException {         /* Load pre-authorized user credentials from the environment.            TODO(developer) - See https://developers.google.com/identity for             guides on implementing OAuth2 for your application. */     GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()         .createScoped(Collections.singleton(SlidesScopes.PRESENTATIONS));     HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(         credentials);      // Create the slides API client     Slides service = new Slides.Builder(new NetHttpTransport(),         GsonFactory.getDefaultInstance(),         requestInitializer)         .setApplicationName("Slides samples")         .build();      // 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")));      BatchUpdatePresentationResponse response = null;     try {       // Execute the request.       BatchUpdatePresentationRequest body =           new BatchUpdatePresentationRequest().setRequests(requests);       response = service.presentations().batchUpdate(presentationId, body).execute();       System.out.println("Added bullets to text in shape with ID: " + shapeId);     } catch (GoogleJsonResponseException e) {       // TODO(developer) - handle error appropriately       GoogleJsonError error = e.getDetails();       if (error.getCode() == 400) {         System.out.printf("Shape not found with id '%s'.\n", shapeId);       } else if (error.getCode() == 404) {         System.out.printf("Presentation not found with id '%s'.\n", presentationId);       } else {         throw e;       }     }     return response;   } }

JavaScript

slides/snippets/slides_create_bulleted_text.js
function createBulletedText(presentationId, shapeId, callback) {   // Add arrow-diamond-disc bullets to all text in the shape.   const requests = [{     createParagraphBullets: {       objectId: shapeId,       textRange: {         type: 'ALL',       },       bulletPreset: 'BULLET_ARROW_DIAMOND_DISC',     },   }];   // Execute the requests.   try {     gapi.client.slides.presentations.batchUpdate({       presentationId: presentationId,       requests: requests,     }).then((batchUpdateResponse) => {       console.log(`Added bullets to text in shape with ID: ${shapeId}`);       if (callback) callback(batchUpdateResponse.result);     });   } catch (err) {     document.getElementById('content').innerText = err.message;     return;   } }

Node.js

slides/snippets/slides_create_bulleted_text.js
/**  * Creates bulleted text for a presentation.  * @param {string} presentationId The presentation ID.  * @param {string} shapeId The shape ID to add bulleted text to.  */ async function createBulletedText(presentationId, shapeId) {   const {GoogleAuth} = require('google-auth-library');   const {google} = require('googleapis');    const auth = new GoogleAuth({     scopes: 'https://www.googleapis.com/auth/presentations',   });    const service = google.slides({version: 'v1', auth});    // Add arrow-diamond-disc bullets to all text in the shape.   const requests = [     {       createParagraphBullets: {         objectId: shapeId,         textRange: {           type: 'ALL',         },         bulletPreset: 'BULLET_ARROW_DIAMOND_DISC',       },     },   ];    // Execute the requests.   try {     const batchUpdateResponse = await service.presentations.batchUpdate({       presentationId,       resource: {         requests,       },     });     console.log(`Added bullets to text in shape with ID: ${shapeId}`);     return batchUpdateResponse.data;   } catch (err) {     // TODO (developer) - Handle exception     throw err;   } }

PHP

slides/snippets/src/SlidesCreateBulletedText.php
<?php use Google\Client; use Google\Service\Drive; use Google\Service\Slides; use Google\Service\Slides\Request;   function createBulletedText($presentationId, $shapeId) {     /* Load pre-authorized user credentials from the environment.        TODO(developer) - See https://developers.google.com/identity for         guides on implementing OAuth2 for your application. */     $client = new Google\Client();     $client->useApplicationDefaultCredentials();     $client->addScope(Google\Service\Drive::DRIVE);     $slidesService = new Google_Service_Slides($client);     // 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);     return $response; }

Python

slides/snippets/slides_create_bulleted_text.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError   def create_bulleted_text(presentation_id, shape_id):   """   Run create_bulleted_text the user has access to.   Load pre-authorized user credentials from the environment.   TODO(developer) - See https://developers.google.com/identity   for guides on implementing OAuth2 for the application.   """   creds, _ = google.auth.default()   # pylint: disable=maybe-no-member   try:     slides_service = build("slides", "v1", credentials=creds)     # 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(f"Added bullets to text in shape with ID: {shape_id}")      return response   except HttpError as error:     print(f"An error occurred: {error}")     return error   if __name__ == "__main__":   # Put the presentation_id and shape_id   # to be submitted.   create_bulleted_text(       "1VD1xmi1-9DonI4zmCKENTzlVxIL5SdGGTmbHmnBjQ1E", "MyTextBox_9"   )

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}"