หน้านี้จะอธิบายวิธีแก้ไขและจัดรูปแบบข้อความในงานนำเสนอโดยใช้ Slides API
เกี่ยวกับข้อความ
ข้อความในงานนำเสนอจะอยู่ในรูปร่างหรือเซลล์ตารางเสมอ API นี้ช่วยให้คุณแก้ไขข้อความนี้ได้หลายวิธี ดังนี้
- คุณสามารถแทรก ลบ หรือแทนที่ข้อความในงานนำเสนอได้
- คุณสามารถเพิ่มการจัดรูปแบบย่อหน้าเพื่อสร้างรายการสัญลักษณ์หัวข้อย่อยได้
- คุณเปลี่ยนการจัดรูปแบบอักขระได้ เช่น ตัวหนา ตัวเอียง สี ขนาดแบบอักษร หรือไฮเปอร์ลิงก์
ดูภาพรวมทั่วไปเกี่ยวกับวิธีการทำงานของการจัดรูปแบบข้อความใน Slides API ได้ที่หน้าแนวคิดโครงสร้างและการจัดรูปแบบข้อความ นอกจากนี้ โปรดดูวิดีโอด้านบนเพื่อดูตัวอย่างที่สมบูรณ์ (Python) ซึ่งรวมแนวคิดการจัดรูปแบบหลายอย่างจากส่วนต่างๆ ด้านล่าง
การแทรก ลบ หรือแทนที่ข้อความ
คุณแทนที่ข้อความในงานนำเสนอโดยใช้ Slides API ได้ 2 วิธี ได้แก่ โดยการค้นหาและแทนที่ข้อความทั้งหมด หรือโดยการลบและเพิ่มข้อความอย่างชัดเจน ทั้ง 2 วิธีใช้เมธอด batchUpdate แต่ใช้คำขอประเภทต่างๆ
การค้นหาและแทนที่จากทุกที่
ใช้ ReplaceAllTextRequest เพื่อทำการค้นหาและแทนที่ข้อความทั้งหมดในเนื้อหา
ส่วนการผสานข้อความของคู่มือการผสานข้อมูลมีตัวอย่างวิธีใช้คำขอประเภทนี้
การแทนที่ข้อความภายในรูปร่าง
Slides API ช่วยให้คุณแก้ไขเนื้อหาข้อความของรูปร่างได้ คุณสามารถนําช่วงข้อความแต่ละช่วงออก และแทรกข้อความในตําแหน่งที่ต้องการได้
ใช้ InsertTextRequest และ DeleteTextRequest เพื่อดําเนินการเหล่านี้
การเปลี่ยนข้อความในบางตำแหน่งประกอบด้วยการลบแล้วตามด้วยการแทรก ซึ่งคุณทําได้โดยทำตามขั้นตอนต่อไปนี้
- ระบุองค์ประกอบหน้าเว็บที่มีข้อความ
- ระบุตำแหน่งเริ่มต้นและสิ้นสุดของข้อความที่จะแทนที่
- โทรหา
batchUpdate
พร้อม 2 คำขอต่อไปนี้- DeleteTextRequest ซึ่งระบุช่วงข้อความที่จะลบ
- InsertTextRequest โดยระบุตําแหน่งเริ่มต้นเดียวกันและสตริงข้อความที่จะแทรก
โปรดตรวจสอบว่าได้รวมคำขอทั้ง 2 รายการไว้ในการเรียกใช้ batchUpdate เดียวกันเพื่อให้แน่ใจว่าข้อความจะแทนที่กัน ดังที่แสดงในตัวอย่างต่อไปนี้ ซึ่งแทนที่ข้อความทั้งหมดในรูปทรงด้วยข้อความใหม่
Apps Script
/** * 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
// 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
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
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
/** * 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
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
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
# 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 แสดงข้อมูลการจัดรูปแบบข้อความ
หากต้องการเปลี่ยนการจัดรูปแบบอักขระของข้อความ ให้ใช้ batchUpdate
กับ UpdateTextStyleRequest
คุณต้องระบุรหัสของรูปร่างหรือเซลล์ตารางที่มีข้อความ รวมถึงช่วงที่มีข้อมูลต่อไปนี้
- ตัวระบุ
FIXED_RANGE
พร้อมกับดัชนีเริ่มต้นและสิ้นสุดที่กําหนดช่วงข้อความที่ต้องการจัดรูปแบบ - ตัวระบุ
FROM_START_INDEX
พร้อมกับดัชนีเริ่มต้นที่กำหนดจุดเริ่มต้นของช่วงข้อความที่ต้องการจัดรูปแบบ - ตัวระบุ
ALL
ที่ไม่มีดัชนีเพื่อจัดรูปแบบข้อความทั้งหมดในรูปร่างเป้าหมาย
ตัวอย่างต่อไปนี้จะดำเนินการจัดรูปแบบข้อความหลายรายการในข้อความที่อยู่ในรูปร่าง
- กำหนดแบบอักษรของตัวอักขระ 0-4 เป็นตัวเอียงหนา
- กำหนดสีของอักขระ 5-9 เป็น
blue
แบบอักษร Times New Roman ขนาด 14 จุด - ไฮเปอร์ลิงก์อักขระ 10-14 ไปยัง
www.example.com
วิธีง่ายๆ ในการทำเช่นนี้คือสร้างรายการคำขอ แล้วใช้การเรียกbatchUpdate 1 ครั้ง ดังนี้
Apps Script
/** * 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
// 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
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
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
/** * 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
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
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
# 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 Script
/** * 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
// 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
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
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
/** * 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
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
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
# 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}"