텍스트 삽입, 삭제 및 이동

Google Docs API를 사용하여 문서에 텍스트를 삽입하거나 삭제할 수 있습니다. 텍스트 이동에는 콘텐츠의 get 다음에 오는 두 작업이 모두 포함됩니다.

문서의 세그먼트 (본문, 머리글, 바닥글 또는 각주)에서 텍스트를 삽입하거나 삭제할 수 있습니다.

텍스트 삽입

문서에 텍스트를 삽입하려면 documents.batchUpdate 메서드를 사용하고 텍스트 및 위치가 페이로드로 포함된 InsertTextRequest를 포함합니다.

다음 코드 샘플은 문서 본문의 지정된 색인 위치에 일련의 텍스트 문자열을 삽입하는 방법을 보여줍니다. 이 예에서는 3개의 타겟 오프셋 (25, 50, 75)을 사용하고 각 위치에 10자 문자열을 삽입합니다.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text1)
                .setLocation(new Location().setIndex(25))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text2)
                .setLocation(new Location().setIndex(50))));

        requests.add(new Request().setInsertText(new InsertTextRequest()
                .setText(text3)
                .setLocation(new Location().setIndex(75))));

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

2,399필리핀

$requests = array();
$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
        ),
    ),
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
        ),
    ),
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
        ),
    ),
));

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

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
         {
            'insertText': {
                'location': {
                    'index': 25,
                },
                'text': text1
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 50,
                },
                'text': text2
            }
        },
                 {
            'insertText': {
                'location': {
                    'index': 75,
                },
                '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 사이의 텍스트를 삭제하는 방법을 보여줍니다.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setDeleteContentRange(
                new DeleteContentRangeRequest()
                        .setRange(new Range()
                                .setStartIndex(10)
                                .setEndIndex(24))
            ));

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

2,399필리핀

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

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

$response = $service->documents->batchUpdate($documentId, $batchUpdateRequest);

Python

    requests = [
        {
            'deleteContentRange': {
                'range': {
                    'startIndex': 10,
                    'endIndex': 24,
                }

            }

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

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

텍스트 이동

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