Text einfügen, löschen und verschieben

Mit der Google Docs API können Sie Text in ein Dokument einfügen oder daraus löschen. Beim Verschieben von Text sind beide Vorgänge erforderlich, wobei dem get des Inhalts ein get vorangestellt wird.

Sie können in jedem der Tab-Segmente eines Dokuments (Hauptteil, Kopfzeile, Fußzeile oder Fußnote) Text einfügen oder löschen. Weitere Informationen finden Sie unter Mit Tabs arbeiten.

Text einfügen

Verwenden Sie die Methode documents.batchUpdate, um Text in ein Dokument einzufügen. Die Nutzlast muss ein InsertTextRequest mit dem Text und dem Speicherort sein.

Das folgende Codebeispiel zeigt, wie Sie eine Reihe von Textstrings an bestimmten Indexpositionen in den Textkörper eines Dokuments einfügen können. Im Beispiel werden drei Ziel-Offsets (25, 50 und 75) verwendet und an jeder Position wird ein String mit zehn Zeichen eingefügt.

Java

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

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text2)
        .setLocation(new Location().setIndex(50).setTabId(<var>TAB_ID</var>))));

requests.add(new Request().setInsertText(new InsertTextRequest()
        .setText(text3)
        .setLocation(new Location().setIndex(75).setTabId(<var>TAB_ID</var>))));

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

PHP

$requests = array();

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text1,
        'location' => array(
            'index' => 25,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text2,
        'location' => array(
            'index' => 50,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

$requests[] = new Google_Service_Docs_Request(array(
    'insertText' => array(
        'text' => $text3,
        'location' => array(
            'index' => 75,
            'tabId' => <var>TAB_ID</var>,
        ),
    ),
));

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

$response = $service->documents->batchUpdate($<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

requests = [
        {
        'insertText': {
            'location': {
                'index': 25,
                'tabId': <var>TAB_ID</var>
            },
            'text': text1
        }
    },
                {
        'insertText': {
            'location': {
                'index': 50,
                'tabId': <var>TAB_ID</var>
            },
            'text': text2
        }
    },
                {
        'insertText': {
            'location': {
                'index': 75,
                'tabId': <var>TAB_ID</var>
            },
            'text': text3
        }
    },
]

result = service.documents().batchUpdate(
    documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()

Bei jeder Einfügung werden alle Indexe mit höherer Nummer um die Größe des eingefügten Texts erhöht. Im Beispiel wird das Ergebnis dieser Indexänderungen vorab berechnet, sodass nachfolgende Einfügungen am neuen, korrigierten Offset erfolgen. Wenn Sie also bei den ursprünglichen Ziel-Offsets von 25, 50 und 75 einfügen möchten, sind die tatsächlichen Einfügeindexe:

  • Beim ersten Einfügen werden 10 Zeichen an der Position 25 hinzugefügt.
  • Beim zweiten Einfügen werden 10 Zeichen an der Position 50 + 10=60 hinzugefügt.
  • Beim dritten Einfügen werden 10 Zeichen an der Position 75 + 10 + 10=95 hinzugefügt.

Text löschen

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

Im folgenden Codebeispiel wird gezeigt, wie Sie den Text zwischen Index 10 und Index 24 im Hauptteil eines Dokuments löschen.

Java

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

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

PHP

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

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

$response = $service->documents->batchUpdate(<var>DOCUMENT_ID</var>, $batchUpdateRequest);

Python

requests = [
    {
        'deleteContentRange': {
            'range': {
                'startIndex': 10,
                'endIndex': 24,
                'tabId': <var>TAB_ID</var>
            }

        }

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

Wie bei Einfügungen werden durch das Löschen von Text die Indexe des gesamten nachfolgenden Texts im Segment geändert. Auch hier kann rückwärts schreiben die Verarbeitung von Indexen vereinfachen.

Text verschieben

Wenn Sie Text verschieben möchten, löschen Sie ihn an einer Stelle und fügen ihn an einer anderen Stelle ein. Wenn Sie Inhalte löschen, erhalten Sie keine Kopie davon (es gibt kein Äquivalent zu einer Zwischenablage). Sie müssen also zuerst die Inhalte des Bereichs extrahieren, damit Sie sie in Ihrer Anfrage zum Einfügen von Text verwenden können.