슬라이드에 도형 및 텍스트 추가하기

이 가이드에서는 Google Slides API를 사용하여 슬라이드에 도형을 추가하고 도형에 텍스트를 삽입하는 방법을 설명합니다.

프레젠테이션의 각 슬라이드에는 여러 페이지 요소가 포함될 수 있으며, 각 페이지 요소는 다음 요소 중 하나입니다.

도형

Shape은 직사각형, 원호, 화살표, 텍스트 상자 또는 기타 정의된 유형의 도형과 같은 페이지 요소입니다. 모양을 만들 때 다음을 지정합니다.

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

도형의 크기와 위치를 제어하는 방법에 대한 자세한 내용은 페이지 요소의 크기 및 위치 지정을 참고하세요.