이 가이드에서는 Google Slides API를 사용하여 슬라이드에 도형을 추가하고 도형에 텍스트를 삽입하는 방법을 설명합니다.
프레젠테이션의 각 슬라이드에는 여러 페이지 요소가 포함될 수 있으며, 각 페이지 요소는 다음 요소 중 하나입니다.
도형
Shape
은 직사각형, 원호, 화살표, 텍스트 상자 또는 기타 정의된 유형의 도형과 같은 페이지 요소입니다. 모양을 만들 때 다음을 지정합니다.
사전 정의된 도형 유형 중 하나를 사용하여 도형의 유형을 지정합니다.
PageElementProperties
예를 들어 크기, 변환, 포함된 '상위' 슬라이드 ID 등이 있습니다.선택적 고유 객체 ID입니다.
transform
페이지 속성은 위치와 크기 조정을 비롯하여 페이지에 도형이 렌더링되는 방식을 정의합니다. 변환에 대한 자세한 내용은 페이지 요소의 크기 및 위치 조정을 참고하세요.
텍스트 및 도형
텍스트는 슬라이드에 다음 두 가지 방법 중 하나로 표시될 수 있습니다.
- 도형 내
- 표의 셀 내
InsertTextRequest
을 사용하여 도형이나 표 셀에 텍스트를 삽입합니다.
모양의 텍스트 Autofit
설정은 텍스트가 모양에 맞게 조정되는 방식에 영향을 줄 수 있는 요청에 의해 자동으로 비활성화됩니다.
예
다음 예에서는 기존 슬라이드에 정사각형 텍스트 상자를 추가하고 텍스트를 삽입합니다.
Apps Script
slides/api/Snippets.gs
/** * Create a new square textbox, using the supplied element ID. * @param {string} presentationId * @param {string} pageId * @returns {*} */ function createTextboxWithText(presentationId, pageId) { const elementId = 'MyTextBox_01'; const pt350 = { magnitude: 350, unit: 'PT' }; const requests = [ { createShape: { objectId: elementId, shapeType: 'TEXT_BOX', elementProperties: { pageObjectId: pageId, size: { height: pt350, width: pt350 }, transform: { scaleX: 1, scaleY: 1, translateX: 350, translateY: 100, unit: 'PT' } } } }, // Insert text into the box, using the supplied element ID. { insertText: { objectId: elementId, insertionIndex: 0, text: 'New Box Text Inserted!' } } ]; // Execute the request. try { const createTextboxWithTextResponse = Slides.Presentations.batchUpdate({ requests: requests }, presentationId); const createShapeResponse = createTextboxWithTextResponse.replies[0].createShape; console.log('Created textbox with ID: %s', createShapeResponse.objectId); return createTextboxWithTextResponse; } catch (err) { // TODO (Developer) - Handle exception console.log('Failed with error: %s', err.error); } };
Go
slides/snippets/presentations.go
// Create a new square text box, using a supplied object ID. textBoxId := "MyTextBox_01" pt350 := slides.Dimension{ Magnitude: 350, Unit: "PT", } requests := []*slides.Request{{ // Create a new square text box, using a supplied object ID. CreateShape: &slides.CreateShapeRequest{ ObjectId: textBoxId, ShapeType: "TEXT_BOX", ElementProperties: &slides.PageElementProperties{ PageObjectId: slideId, Size: &slides.Size{ Height: &pt350, Width: &pt350, }, Transform: &slides.AffineTransform{ ScaleX: 1.0, ScaleY: 1.0, TranslateX: 350.0, TranslateY: 100.0, Unit: "PT", }, }, }, }, { // Insert text into the box, using the object ID given to it. InsertText: &slides.InsertTextRequest{ ObjectId: textBoxId, InsertionIndex: 0, Text: "New Box Text Inserted", }, }} // Execute the requests. body := &slides.BatchUpdatePresentationRequest{ Requests: requests, } response, err := slidesService.Presentations.BatchUpdate(presentationId, body).Do() if err != nil { log.Printf("Unable to create text box. %v", err) } fmt.Printf("Created text box with ID: %s", response.Replies[0].CreateShape.ObjectId)
자바
slides/snippets/src/main/java/CreateTextboxWithText.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.AffineTransform; 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.CreateShapeRequest; import com.google.api.services.slides.v1.model.CreateShapeResponse; import com.google.api.services.slides.v1.model.Dimension; import com.google.api.services.slides.v1.model.InsertTextRequest; import com.google.api.services.slides.v1.model.PageElementProperties; import com.google.api.services.slides.v1.model.Request; import com.google.api.services.slides.v1.model.Size; 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 Create Textbox API */ public class CreateTextboxWithText { /** * Create a new square textbox, using the specified id. * * @param presentationId - id of the presentation. * @param slideId - id of the slide. * @param textBoxId - id for the textbox. * @return textbox id * @throws IOException - if credentials file not found. */ public static BatchUpdatePresentationResponse createTextBoxWithText( String presentationId, String slideId, String textBoxId) 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(); // Create a new square text box, using a supplied object ID. List<Request> requests = new ArrayList<>(); Dimension pt350 = new Dimension().setMagnitude(350.0).setUnit("PT"); requests.add(new Request() .setCreateShape(new CreateShapeRequest() .setObjectId(textBoxId) .setShapeType("TEXT_BOX") .setElementProperties(new PageElementProperties() .setPageObjectId(slideId) .setSize(new Size() .setHeight(pt350) .setWidth(pt350)) .setTransform(new AffineTransform() .setScaleX(1.0) .setScaleY(1.0) .setTranslateX(350.0) .setTranslateY(100.0) .setUnit("PT"))))); // Insert text into the box, using the object ID given to it. requests.add(new Request() .setInsertText(new InsertTextRequest() .setObjectId(textBoxId) .setInsertionIndex(0) .setText("New Box Text Inserted"))); BatchUpdatePresentationResponse response = null; try { // Execute the requests. BatchUpdatePresentationRequest body = new BatchUpdatePresentationRequest().setRequests(requests); response = service.presentations().batchUpdate(presentationId, body).execute(); CreateShapeResponse createShapeResponse = response.getReplies().get(0).getCreateShape(); System.out.println("Created textbox with ID: " + createShapeResponse.getObjectId()); } catch (GoogleJsonResponseException e) { // TODO(developer) - handle error appropriately GoogleJsonError error = e.getDetails(); if (error.getCode() == 404) { System.out.printf("Presentation not found with id '%s'.\n", presentationId); } else { throw e; } } return response; } }
자바스크립트
slides/snippets/slides_create_textbox_with_text.js
function createTextboxWithText(presentationId, pageId, callback) { // Create a new square textbox, using the supplied element ID. const elementId = 'MyTextBox_01'; const pt350 = { magnitude: 350, unit: 'PT', }; const requests = [{ createShape: { objectId: elementId, shapeType: 'TEXT_BOX', elementProperties: { pageObjectId: pageId, size: { height: pt350, width: pt350, }, transform: { scaleX: 1, scaleY: 1, translateX: 350, translateY: 100, unit: 'PT', }, }, }, }, // Insert text into the box, using the supplied element ID. { insertText: { objectId: elementId, insertionIndex: 0, text: 'New Box Text Inserted!', }, }]; // Execute the request. try { gapi.client.slides.presentations.batchUpdate({ presentationId: presentationId, requests: requests, }).then((createTextboxWithTextResponse) => { const createShapeResponse = createTextboxWithTextResponse.result.replies[0].createShape; console.log(`Created textbox with ID: ${createShapeResponse.objectId}`); if (callback) callback(createTextboxWithTextResponse.result); }); } catch (err) { document.getElementById('content').innerText = err.message; return; } }
Node.js
slides/snippets/slides_create_textbox_with_text.js
/** * Adds a textbox with text to a slide. * @param {string} presentationId The presentation ID. * @param {string} pageId The page to add the textbox to. */ async function createTextboxWithText(presentationId, pageId) { 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 elementId = 'MyTextBox_01'; const pt350 = { magnitude: 350, unit: 'PT', }; const requests = [ { createShape: { objectId: elementId, shapeType: 'TEXT_BOX', elementProperties: { pageObjectId: pageId, size: { height: pt350, width: pt350, }, transform: { scaleX: 1, scaleY: 1, translateX: 350, translateY: 100, unit: 'PT', }, }, }, }, // Insert text into the box, using the supplied element ID. { insertText: { objectId: elementId, insertionIndex: 0, text: 'New Box Text Inserted!', }, }, ]; // Execute the request. try { const createTextboxWithTextResponse = await service.presentations.batchUpdate({ presentationId, resource: {requests}, }); const createShapeResponse = createTextboxWithTextResponse.data.replies[0].createShape; console.log(`Created textbox with ID: ${createShapeResponse.objectId}`); return createTextboxWithTextResponse.data; } catch (err) { // TODO (developer) - Handle exception throw err; } }
PHP
slides/snippets/src/SlidesCreateTextboxWithText.php
<?php use Google\Client; use Google\Service\Slides\BatchUpdatePresentationRequest; use Google\Service\Slides; use Google\Service\DriveFile; use Google\Service\Slides\Request; function createTextboxWithText($presentationId, $pageId) { /* 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); try { // Create a new square textbox, using the supplied element ID. $elementId = "MyTextBoxxxx_01"; $pt350 = array('magnitude' => 350, 'unit' => 'PT'); $requests = array(); $requests[] = new Google_Service_Slides_Request(array( 'createShape' => array( 'objectId' => $elementId, 'shapeType' => 'TEXT_BOX', 'elementProperties' => array( 'pageObjectId' => $pageId, 'size' => array( 'height' => $pt350, 'width' => $pt350 ), 'transform' => array( 'scaleX' => 1, 'scaleY' => 1, 'translateX' => 350, 'translateY' => 100, 'unit' => 'PT' ) ) ) )); // Insert text into the box, using the supplied element ID. $requests[] = new Google_Service_Slides_Request(array( 'insertText' => array( 'objectId' => $elementId, 'insertionIndex' => 0, 'text' => 'New Box Text Inserted!' ) )); // Execute the requests. $batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array( 'requests' => $requests )); $response = $slidesService->presentations->batchUpdate($presentationId, $batchUpdateRequest); $createShapeResponse = $response->getReplies()[0]->getCreateShape(); printf("Created textbox with ID: %s\n", $createShapeResponse->getObjectId()); return $response; } catch (Exception $e) { echo 'Message: ' . $e->getMessage(); } }
Python
slides/snippets/slides_create_textbox_with_text.py
import google.auth from googleapiclient.discovery import build from googleapiclient.errors import HttpError def create_textbox_with_text(presentation_id, page_id): """ Creates the textbox with 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: service = build("slides", "v1", credentials=creds) # Create a new square textbox, using the supplied element ID. element_id = "MyTextBox_10" pt350 = {"magnitude": 350, "unit": "PT"} requests = [ { "createShape": { "objectId": element_id, "shapeType": "TEXT_BOX", "elementProperties": { "pageObjectId": page_id, "size": {"height": pt350, "width": pt350}, "transform": { "scaleX": 1, "scaleY": 1, "translateX": 350, "translateY": 100, "unit": "PT", }, }, } }, # Insert text into the box, using the supplied element ID. { "insertText": { "objectId": element_id, "insertionIndex": 0, "text": "New Box Text Inserted!", } }, ] # Execute the request. body = {"requests": requests} response = ( service.presentations() .batchUpdate(presentationId=presentation_id, body=body) .execute() ) create_shape_response = response.get("replies")[0].get("createShape") print(f"Created textbox with ID:{(create_shape_response.get('objectId'))}") except HttpError as error: print(f"An error occurred: {error}") return error return response if __name__ == "__main__": # Put the presentation_id, Page_id of slides whose list needs # to be submitted. create_textbox_with_text( "12SQU9Ik-ShXecJoMtT-LlNwEPiFR7AadnxV2KiBXCnE", "Myfirstpage" )
Ruby
slides/snippets/lib/file_snippets.rb
# Create a new square textbox, using the supplied element ID. element_id = 'MyTextBox_01' pt350 = { magnitude: '350', unit: 'PT' } requests = [ { create_shape: { object_id_prop: element_id, shape_type: 'TEXT_BOX', element_properties: { page_object_id: page_id, size: { height: pt350, width: pt350 }, transform: { scale_x: '1', scale_y: '1', translate_x: '350', translate_y: '100', unit: 'PT' } } } }, # Insert text into the box, using the supplied element ID. { insert_text: { object_id_prop: element_id, insertion_index: 0, text: 'New Box Text Inserted!' } } ] # Execute the request. req = Google::Apis::SlidesV1::BatchUpdatePresentationRequest.new(requests: requests) response = slides_service.batch_update_presentation( presentation_id, req ) create_shape_response = response.replies[0].create_shape puts "Created textbox with ID: #{create_shape_response.object_id}"
도형의 크기와 위치를 제어하는 방법에 대한 자세한 내용은 페이지 요소의 크기 및 위치 지정을 참고하세요.