Halaman ini memberi tahu Anda cara mengedit dan menata gaya teks dalam presentasi Anda menggunakan Slides API.
Tentang teks
Teks dalam presentasi Anda selalu dimuat di dalam bentuk atau sel tabel. API memungkinkan Anda mengubah teks ini dengan beberapa cara:
- Anda dapat menyisipkan, menghapus, atau mengganti teks dalam presentasi Anda.
- Anda dapat menambahkan format paragraf untuk membuat daftar berbutir.
- Anda dapat mengubah pemformatan karakter seperti tebal, miring, warna, ukuran font, atau {i>hyperlink<i}.
Lihat halaman konsep Struktur dan Gaya Teks untuk ringkasan umum tentang cara kerja gaya teks di Slides API. Lihat juga video di atas untuk melihat contoh lengkap (Python) yang menggabungkan beberapa konsep pemformatan dari bagian di bawah ini.
Menyisipkan, menghapus, atau mengganti teks
Ada dua cara untuk mengganti teks dalam presentasi menggunakan Slides API: dengan melakukan penelusuran dan penggantian global, atau dengan menghapus dan menambahkan teks. Kedua cara tersebut menggunakan batchUpdate tetapi dengan jenis permintaan yang berbeda.
Penelusuran dan penggantian global
Menggunakan ReplaceAllTextRequest untuk melakukan pencarian dan penggantian global di seluruh presentasi.
Bagian Penggabungan Teks pada Penggabungan Panduan data memberikan contoh cara menggunakan jenis permintaan ini.
Mengganti teks dalam bentuk
Slides API memungkinkan Anda mengubah konten teks suatu bentuk. Anda dapat menghapus rentang teks individual, dan Anda dapat menyisipkan teks di lokasi tertentu.
Menggunakan InsertTextRequest dan DeleteTextRequest untuk melakukan operasi tersebut.
Mengganti region teks tertentu terdiri dari penghapusan dan kemudian penyisipan, yang dapat Anda lakukan menggunakan langkah-langkah berikut:
- Identifikasi elemen halaman yang berisi teks.
- Identifikasi posisi awal dan akhir teks yang akan diganti.
- Panggil
batchUpdate
dengan dua permintaan berikut:- DeleteTextRequest, yang menentukan rentang teks yang akan dihapus.
- InsertTextRequest, menentukan posisi awal yang sama serta {i>string <i}teks yang akan disisipkan.
Untuk memastikan atomisitas saat Anda mengganti teks dengan cara ini, pastikan untuk menyertakan keduanya permintaan di panggilan Creator yang sama. Hal ini ditunjukkan dalam contoh berikut, yang mengganti semua teks dalam suatu bentuk dengan teks baru:
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}"
Mengubah pemformatan karakter
Pemformatan karakter menentukan rendering karakter teks dalam presentasi, termasuk jenis huruf, warna, dan {i>hyperlink<i}.
Konsep halaman Struktur dan Gaya Teks menjelaskan cara Slides API merepresentasikan informasi gaya teks.
Untuk mengubah format karakter teks, gunakan batchUpdate
dengan
UpdateTextStyleRequest.
Anda perlu memberikan ID bentuk atau sel tabel yang berisi teks,
serta Rentang
yang mencakup informasi berikut:
FIXED_RANGE
penentu, bersama dengan indeks awal dan akhir yang menentukan rentang teks yang ingin Anda tata gayanya.FROM_START_INDEX
penentu, bersama dengan indeks awal yang menentukan awal rentang teks yang ingin Anda atur gayanya.ALL
penentu, tanpa indeks, untuk menata gaya semua teks dalam target bentuk tertentu.
Contoh berikut melakukan beberapa operasi penataan gaya teks pada teks yang terdapat dalam bentuk:
- Menetapkan font karakter 0-4 menjadi huruf miring tebal.
- Menetapkan warna karakter 5-9 hingga
blue
dengan font Times New Roman 14 pt. - Membuat hyperlink karakter dari 10-14 hingga
www.example.com
.
Cara mudah untuk melakukannya adalah dengan membuat daftar permintaan dan kemudian menggunakan satu batchUpdate hubungi:
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}"
Mengubah pemformatan paragraf
Pemformatan paragraf menentukan bagaimana blok teks dirender dalam presentasi, termasuk {i>alignment<i}, indentasi, dan ornamentasi daftar.
Konsep halaman Struktur dan Gaya Teks menjelaskan bagaimana [[slides_api_short]] mewakili informasi gaya visual paragraf.
Slides API mendukung pembaruan gaya paragraf, konversi paragraf biasa menjadi daftar berbutir, dan menghapus butir dari paragraf.
Mengonversi paragraf menjadi daftar
Operasi pemformatan paragraf yang umum adalah mengonversi paragraf menjadi daftar berbutir. Contoh berikut mengonversi semua paragraf dalam suatu bentuk ke daftar berbutir, dan menentukan glyph butir eksplisit yang akan digunakan.
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}"