텍스트 삽입, 삭제 및 이동

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

거꾸로 작성하여 문제를 단순화하세요. 삽입과 마찬가지로 텍스트를 삭제하면 세그먼트에서 '아래'에 있는 모든 텍스트의 색인이 변경됩니다. 다시 말하지만 뒤로 쓰기를 사용하면 색인 처리를 간소화할 수 있습니다.

텍스트 이동

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