L'API Documenti Google ti consente di inserire o eliminare del testo in un documento. Lo spostamento del testo
coinvolge entrambe le operazioni, precedute da un get
dei contenuti.
Puoi inserire o eliminare del testo in uno qualsiasi dei segmenti della scheda di un documento (testo, intestazione, piè di pagina o nota a piè di pagina).
Inserisci testo
Per inserire del testo in un documento, utilizza il metodo
documents.batchUpdate
e includi un
InsertTextRequest
con il testo e la posizione come payload.
Il seguente esempio di codice mostra come inserire una serie di stringhe di testo in posizioni dell'indice specificate nel corpo di un documento. L'esempio utilizza tre offset di destinazione (25, 50 e 75) e inserisce una stringa di dieci caratteri in ogni posizione.
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()
Ogni inserimento incrementa tutti gli indici con un numero più alto in base alle dimensioni del testo inserito. L'esempio precalcula il risultato di queste modifiche dell'indice in modo che le inserzioni successive vengano eseguite con il nuovo offset corretto. Pertanto, per inserire con gli offset target originali di 25, 50 e 75, gli indici di inserimento effettivi sono:
- La prima inserzione aggiunge 10 caratteri all'offset 25.
- Il secondo inserisce 10 caratteri all'offset 50+10=60.
- La terza inserzione aggiunge 10 caratteri all'offset 75+10+10=95.
Eliminare il testo
Per eliminare del testo da un documento, crea innanzitutto un
Range
che definisce l'intervallo di
testo da eliminare. Quindi utilizza il metodo documents.batchUpdate
e includi un
DeleteContentRangeRequest
.
Il seguente esempio di codice mostra come eliminare il testo tra l'indice 10 e l'indice 24 nel corpo di un documento.
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()
Semplifica le cose scrivendo all'indietro. Come per le inserzioni, l'eliminazione del testo altera gli indici di tutto il testo "sotto" nel segmento. Anche in questo caso, la scrittura all'indietro può semplificare la gestione degli indici.
Spostare il testo
Per spostare il testo, devi eliminarlo in una posizione e inserirlo in un'altra. Se elimini i contenuti, non ne ricevi una copia (non esiste un concetto equivalente alla clipboard), quindi devi prima estrarre i contenuti dell'intervallo per poterli utilizzare nella richiesta di inserimento di testo.
Argomenti correlati
- Creare e gestire documenti
- Unire il testo in un documento
- Struttura di un documento di Documenti Google