Text einfügen, löschen und verschieben

Mit der Google Docs API können Sie Text in ein Dokument einfügen oder löschen. Das Verschieben von Text umfasst beide Vorgänge, denen ein get des Inhalts vorangestellt ist.

Sie können Text in alle Segmente eines Dokuments einfügen oder löschen (Text, Kopf-, Fußzeile oder Fußnote).

Text einfügen

Wenn Sie Text in ein Dokument einfügen möchten, verwenden Sie die Methode documents.batchUpdate und fügen Sie einen InsertTextRequest mit dem Text und der Position als Nutzlast ein.

Das folgende Codebeispiel zeigt, wie Sie eine Reihe von Textstrings an bestimmten Indexpositionen im Text eines Dokuments einfügen können. In diesem Beispiel werden drei Ziel-Offsets (25, 50 und 75) verwendet und an jeder Stelle ein zehnstelliger String eingefügt.

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

Bei jedem Einfügen werden alle Indexe mit höherer Nummer um die Größe des eingefügten Textes erhöht. Im Beispiel wird das Ergebnis dieser Indexänderungen vorab berechnet, sodass nachfolgende Einfügungen mit dem neuen, korrigierten Offset erfolgen. Um also bei den ursprünglichen Ziel-Offsets von 25, 50 und 75 eingefügt zu werden, lauten die tatsächlichen Einfügungsindexe wie folgt:

  • Beim ersten Einfügen werden 10 Zeichen bei einem Offset 25 hinzugefügt.
  • Beim zweiten Einfügen werden 10 Zeichen bei einem Offset von 50 + 10=60 hinzugefügt.
  • Beim dritten Einfügen werden 10 Zeichen bei einem Offset von 75 + 10 + 10=95 hinzugefügt.

Text löschen

Wenn Sie Text aus einem Dokument löschen möchten, müssen Sie zuerst ein Range-Objekt erstellen, das den Bereich des zu löschenden Textes definiert. Verwenden Sie dann die Methode documents.batchUpdate und fügen Sie eine DeleteContentRangeRequest ein.

Das folgende Codebeispiel zeigt, wie Sie den Text zwischen Index 10 und Index 24 im Text eines Dokuments löschen können.

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

Vereinfachte Sachverhalte einfach durch umgekehrtes Schreiben. Wie bei Einfügungen ändert sich auch beim Löschen von Text die Indexe des gesamten Textes „unten“ im Segment. Auch hier kann das Zurückschreiben die Handhabung von Indexen vereinfachen.

Text verschieben

Wenn Sie Text verschieben möchten, löschen Sie ihn zuerst an einer Stelle und fügen Sie ihn dann an anderer Stelle ein. Durch das Löschen von Inhalten erhalten Sie keine Kopie davon. Es gibt kein vergleichbares Konzept für die Zwischenablage. Sie müssen also zuerst den Inhalt des Bereichs extrahieren, damit Sie ihn in Ihrer Anfrage zum Einfügen von Text verwenden können.