텍스트 삽입, 삭제 및 이동

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(<var>TAB_ID</var>))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text2)
        .setLocation(new Location().setIndex(50).setTabId(<var>TAB_ID</var>))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text3)
        .setLocation(new Location().setIndex(75).setTabId(<var>TAB_ID</var>))));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();

PHP

$requests = array();

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate($<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 25,
                'tabId': <var>TAB_ID</var>
            },
            'text': text1
        }
    },
                {
        'insertText': {
            'location': {
                'index': 50,
                'tabId': <var>TAB_ID</var>
            },
            'text': text2
        }
    },
                {
        'insertText': {
            'location': {
                'index': 75,
                'tabId': <var>TAB_ID</var>
            },
            'text': text3
        }
    },
]

result = service.documents().batchUpdate(
    documentId=<var>DOCUMENT_ID</var>, 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(<var>TAB_ID</var>))
    ));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();

PHP

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'deleteContentRange' => array(
        'range' => array(
            'startIndex' => 10,
            'endIndex' => 24,
            'tabId' => <var>TAB_ID</var>
        ),
    ),
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));

$response = $service->documents->batchUpdate(<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

requests = [
    {
        'deleteContentRange': {
            'range': {
                'startIndex': 10,
                'endIndex': 24,
                'tabId': <var>TAB_ID</var>
            }

        }

    },
]
result = service.documents().batchUpdate(
    documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()

삽입과 마찬가지로 텍스트를 삭제하면 세그먼트에서 다음에 나오는 모든 텍스트의 색인이 변경됩니다. 다시 말하지만 뒤에서부터 작성하면 색인 처리를 간소화할 수 있습니다.

텍스트 이동

텍스트를 이동하려면 한 위치에서 텍스트를 삭제한 후 다른 위치에 삽입합니다. 콘텐츠를 삭제해도 사본이 제공되지 않으므로 (클립보드와 동일한 개념이 없음) 삽입 텍스트 요청에서 사용할 수 있도록 먼저 범위의 콘텐츠를 추출해야 합니다.