Mit der Google Docs API können Sie Text in ein Dokument einfügen oder daraus löschen. Zum Verschieben von Text sind beide Vorgänge erforderlich, gefolgt von einer get
des Inhalts.
Sie können Text in jedem Segment eines Tabs eines Dokuments (Textkörper, Kopf-, Fuß- oder Fußnote) einfügen oder löschen.
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 dem Speicherort als Nutzlast hinzu.
Das folgende Codebeispiel zeigt, wie Sie eine Reihe von Textstrings an bestimmten Indexpositionen im Textkörper eines Dokuments einfügen können. Im Beispiel werden drei Zieloffsets (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(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()
Bei jeder Einfügung werden alle Indexe mit höheren Nummern um die Größe des eingefügten Texts erhöht. Im Beispiel wird das Ergebnis dieser Indexänderungen vorab berechnet, damit nachfolgende Einfügungen am neuen, korrigierten Offset erfolgen. Wenn also die Anzeigen an den ursprünglichen Ziel-Offset-Positionen 25, 50 und 75 eingefügt werden sollen, sind die tatsächlichen Einfügeindexe:
- Bei der ersten Einfügung werden 10 Zeichen bei Offset 25 hinzugefügt.
- Die zweite Einfügung fügt 10 Zeichen bei einem Offset von 50 + 10=60 hinzu.
- Durch die dritte Einfügung werden 10 Zeichen am Offset 75 + 10 + 10=95 hinzugefügt.
Text löschen
Wenn Sie Text aus einem Dokument löschen möchten, erstellen Sie zuerst einen Range
, der 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 Textkörper 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(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()
Vereinfachen Sie die Sache, indem Sie rückwärts schreiben. Wie bei Einfügungen werden auch beim Löschen von Text die Indizes des gesamten Texts „unten“ im Segment geändert. Auch hier kann das Rückwärtsschreiben die Verwaltung von Indexen vereinfachen.
Text verschieben
Wenn Sie Text verschieben möchten, löschen Sie ihn an einer Stelle und fügen Sie ihn dann an einer anderen Stelle ein. Wenn Sie Inhalte löschen, erhalten Sie keine Kopie davon (es gibt kein entsprechendes Konzept wie die Zwischenablage). Sie müssen also zuerst den Inhalt des Bereichs extrahieren, damit Sie ihn in Ihrem Texteinfügeantrag verwenden können.
Weitere Informationen
- Dokumente erstellen und verwalten
- Text in ein Dokument einfügen
- Struktur eines Google Docs-Dokuments