Wstawianie, usuwanie i przenoszenie tekstu

Interfejs API Dokumentów Google umożliwia wstawianie i usuwanie tekstu w dokumencie. Przenoszenie tekstu obejmuje obie operacje, po których następuje znak get treści.

Możesz wstawiać i usuwać tekst w dowolnych segmentach dokumentu (w głównej części, w nagłówku, stopce lub w przypisie).

Wstaw tekst

Aby wstawić tekst do dokumentu, użyj metody documents.batchUpdate i dodaj InsertTextRequest z tekstem oraz lokalizacją jako ładunkiem.

Poniższy przykładowy kod pokazuje, jak wstawić serię ciągów tekstowych w określonych lokalizacjach indeksu w treści dokumentu. W przykładzie wykorzystano 3 przesunięcia docelowe (25, 50 i 75) i wstawia w każdej lokalizacji ciąg 10 znaków.

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

PHP

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

Każde wstawienie zwiększa wartość wszystkich indeksów o wyższych numerach o rozmiar wstawionego tekstu. W przykładzie wstępnie obliczono wynik tych zmian indeksu, aby kolejne wstawienia miały miejsce z nowym, skorygowanym przesunięciem. Dlatego, aby wstawić do pierwotnych indeksów przesunięcia o 25, 50 i 75, rzeczywiste indeksy wstawiania to:

  • Pierwsze wstawienie powoduje dodanie 10 znaków w pozycji 25.
  • Po drugie wstawienie dodaje 10 znaków w pozycji 50+10=60.
  • Trzecie wstawienie powoduje dodanie 10 znaków w pozycji 75+10+10=95.

Usuwanie tekstu

Aby usunąć tekst z dokumentu, najpierw utwórz obiekt Range określający zakres tekstu do usunięcia. Następnie użyj metody documents.batchUpdate i dołącz DeleteContentRangeRequest.

Poniższy przykładowy kod pokazuje, jak usunąć tekst pomiędzy indeksem 10 a indeksem 24 w treści dokumentu.

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

PHP

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

Uprość sprawy, zapisując je wstecz. Tak jak w przypadku wstawiania, usunięcie tekstu zmieni indeksy całego tekstu „poniżej” w segmencie. Również zapis do tyłu może uprościć obsługę indeksów.

Przenieś tekst

Aby przenieść tekst, usuń go w jednym miejscu, a następnie wstaw w inne miejsce. Usunięcie treści nie powoduje utworzenia jej kopii (nie ma on swojego odpowiednika w postaci schowka), więc musisz najpierw wyodrębnić zawartość zakresu, aby móc jej użyć w żądaniu wstawiania tekstu.