Inserir, excluir e mover texto

A API Google Docs permite inserir ou excluir texto em um documento. Movendo texto envolve as duas operações, precedidas por um get do conteúdo.

Você pode inserir ou excluir texto em qualquer documento segmentos de tab (corpo, cabeçalho, rodapé ou nota de rodapé).

Inserir texto

Para inserir texto em um documento, use o documents.batchUpdate e incluem um método InsertTextRequest com o texto e o local como payload.

O exemplo de código a seguir mostra como você pode inserir uma série de strings de texto em locais de índice especificados no corpo de um documento. O exemplo usa três deslocamentos de destino (25, 50 e 75) e insere uma sequência de dez caracteres em cada o local.

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

Cada inserção incrementa todos os índices de número mais alto pelo tamanho do o texto inserido. O exemplo calcula previamente o resultado dessas alterações do índice para que que as inserções subsequentes aconteçam no novo deslocamento corrigido. Assim, para inserir nos deslocamentos de destino originais de 25, 50 e 75, os índices de inserção reais são:

  • A primeira inserção adiciona 10 caracteres no deslocamento 25.
  • A segunda inserção adiciona 10 caracteres com o deslocamento 50+10=60.
  • A terceira inserção adiciona 10 caracteres no deslocamento 75+10+10=95.
.

Excluir texto

Para excluir texto de um documento, primeiro crie uma Range que define o intervalo de texto a ser excluído. Em seguida, use o método documents.batchUpdate e inclua um DeleteContentRangeRequest.

O exemplo de código a seguir mostra como excluir o texto entre o índice 10 e o índice 24 no corpo do 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()

Simplifique os casos escrevendo de trás para frente. Assim como nas inserções, excluir texto altera os índices de todo o texto "abaixo" no segmento. Mais uma vez, escrever inversa pode simplificar o gerenciamento de índices.

Mover texto

Para mover o texto, exclua-o em um local e insira-o em outro lugar. Excluir conteúdo não fornece uma cópia dele (não existe um conceito equivalente de uma área de transferência). Por isso, extraia o conteúdo do intervalo primeiro para poder usar na solicitação de inserção de texto.