Inserire, eliminare e spostare testo

L'API Documenti Google consente di inserire o eliminare testo in un documento. Lo spostamento del testo prevede entrambe le operazioni, precedute da un carattere get dei contenuti.

Puoi inserire o eliminare testo in qualsiasi segmento del documento (intestazione, piè di pagina, note a piè di pagina o corpo).

Inserimento di testo

Per inserire testo in un documento, utilizza il metodo BatchUpdate e includi un elemento InsertTextRequest con il testo e la posizione come payload.

L'esempio seguente mostra come inserire una serie di stringhe di testo in posizioni di indice specificate nel corpo di un documento. L'esempio seleziona tre offset target (25, 50 e 75) e inserisce una stringa di dieci caratteri in ogni località.

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

Ogni inserzione incrementa tutti gli indici con numero più alto in base alle dimensioni del testo inserito. L'esempio precalcola il risultato di queste modifiche dell'indice in modo che gli inserzione successivi vengano eseguiti in corrispondenza del nuovo offset corretto. Pertanto, per l'inserimento con gli offset di destinazione originali di 25, 50 e 75, gli indici di inserzione effettivi sono:

  • Il primo inserimento aggiunge 10 caratteri all'offset 25.
  • Il secondo inserimento aggiunge 10 caratteri all'offset 50 + 10=60.
  • Il terzo inserimento aggiunge 10 caratteri all'offset 75 + 10 + 10=95.

Eliminazione del testo

Per eliminare testo da un documento, devi prima creare un intervallo che definisca l'intervallo di testo da eliminare. Quindi utilizza il metodo BatchUpdate e includi un valore DeleteContentRangeRequest.

L'esempio seguente mostra come eliminare il testo tra gli indici 10 e 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))
            ));

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

Semplifica le pratiche scrivendo a ritroso. Come per gli inserzione, l'eliminazione del testo altera gli indici di tutto il testo "sotto" nel segmento. Anche in questo caso, la scrittura a ritroso può semplificare la gestione degli indici.

Spostamento del testo

Per spostare il testo, eliminalo in una posizione e poi inseriscilo in un'altra posizione. Tuttavia, l'eliminazione di contenuti non ne fornisce una copia (ad esempio non esiste un concetto equivalente negli appunti), pertanto devi estrarre i contenuti dell'intervallo da utilizzare nella richiesta di inserimento.