텍스트 삽입, 삭제 및 이동

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()

뒤에서부터 작성하여 문제를 간소화합니다. 삽입과 마찬가지로 텍스트를 삭제하면 세그먼트의 '아래에 있는' 모든 텍스트의 색인이 변경됩니다. 다시 한번 강조하지만 역순으로 작성하면 색인을 간편하게 처리할 수 있습니다.

텍스트 이동

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