Google Docs API를 사용하면 문서에 텍스트를 삽입하거나 삭제할 수 있습니다. 텍스트를 이동하려면 두 작업을 모두 실행해야 하며, 그 앞에 콘텐츠의 get
가 표시됩니다.
문서 탭의 세그먼트 (본문, 머리글, 바닥글 또는 각주)에서 텍스트를 삽입하거나 삭제할 수 있습니다.
텍스트 삽입
문서에 텍스트를 삽입하려면 documents.batchUpdate
메서드를 사용하고 텍스트와 위치를 페이로드로 포함하는 InsertTextRequest
를 포함합니다.
다음 코드 샘플은 문서 본문의 지정된 색인 위치에 일련의 텍스트 문자열을 삽입하는 방법을 보여줍니다. 이 예에서는 세 가지 타겟 오프셋 (25, 50, 75)을 사용하고 각 위치에 10자 문자열을 삽입합니다.
자바
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text1) .setLocation(new Location().setIndex(25).setTabId(TAB_ID)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text2) .setLocation(new Location().setIndex(50).setTabId(TAB_ID)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text3) .setLocation(new Location().setIndex(75).setTabId(TAB_ID)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text1, 'location' => array( 'index' => 25, 'tabId' => TAB_ID, ), ), 'insertText' => array( 'text' => $text2, 'location' => array( 'index' => 50, 'tabId' => TAB_ID, ), ), 'insertText' => array( 'text' => $text3, 'location' => array( 'index' => 75, 'tabId' => TAB_ID, ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'insertText': { 'location': { 'index': 25, 'tabId': TAB_ID }, 'text': text1 } }, { 'insertText': { 'location': { 'index': 50, 'tabId': TAB_ID }, 'text': text2 } }, { 'insertText': { 'location': { 'index': 75, 'tabId': TAB_ID }, 'text': text3 } }, ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
삽입할 때마다 삽입된 텍스트의 크기만큼 더 높은 번호의 색인이 모두 증가합니다. 이 예에서는 후속 삽입이 새롭게 수정된 오프셋에서 이루어지도록 이러한 색인 변경의 결과를 미리 계산합니다. 따라서 원래 타겟 오프셋 25, 50, 75에 삽입하려면 실제 삽입 색인은 다음과 같습니다.
- 첫 번째 삽입은 오프셋 25에 10자를 추가합니다.
- 두 번째 삽입은 오프셋 50+10=60에 10자를 추가합니다.
- 세 번째 삽입은 오프셋 75+10+10=95에 10자를 추가합니다.
텍스트 삭제
문서에서 텍스트를 삭제하려면 먼저 삭제할 텍스트 범위를 정의하는 Range
를 만듭니다. 그런 다음 documents.batchUpdate
메서드를 사용하고 DeleteContentRangeRequest
를 포함합니다.
다음 코드 샘플은 문서 본문에서 색인 10과 색인 24 사이의 텍스트를 삭제하는 방법을 보여줍니다.
자바
List<Request> requests = new ArrayList<>(); requests.add(new Request().setDeleteContentRange( new DeleteContentRangeRequest() .setRange(new Range() .setStartIndex(10) .setEndIndex(24) .setTabId(TAB_ID)) )); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'deleteContentRange' => array( 'range' => array( 'startIndex' => 10, 'endIndex' => 24, 'tabId' => TAB_ID ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);
Python
requests = [ { 'deleteContentRange': { 'range': { 'startIndex': 10, 'endIndex': 24, 'tabId': TAB_ID } } }, ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
뒤에서부터 작성하여 문제를 간소화합니다. 삽입과 마찬가지로 텍스트를 삭제하면 세그먼트의 '아래에 있는' 모든 텍스트의 색인이 변경됩니다. 다시 한번 강조하지만 역순으로 작성하면 색인을 간편하게 처리할 수 있습니다.
텍스트 이동
텍스트를 이동하려면 한 위치에서 텍스트를 삭제한 다음 다른 위치에 삽입합니다. 콘텐츠를 삭제해도 사본이 제공되지 않으므로 (클립보드에 상응하는 개념이 없음) 먼저 범위의 콘텐츠를 추출해야 텍스트 삽입 요청에 사용할 수 있습니다.