Cómo insertar, borrar y mover texto

La API de Documentos de Google te permite insertar o borrar texto en un documento. Cómo mover el texto Incluye ambas operaciones, precedidas por un get del contenido.

Puedes insertar o borrar texto en cualquier documento segmentos de la pestaña (cuerpo, encabezado, pie de página o nota al pie).

Insertar texto

Para insertar texto en un documento, usa documents.batchUpdate e incluye un InsertTextRequest con el texto y la ubicación como carga útil.

El siguiente ejemplo de código muestra cómo podrías insertar una serie de cadenas de texto en ubicaciones de índices especificadas en el cuerpo de un documento. En el ejemplo, se usan tres desplazamientos de destino (25, 50 y 75) e inserta una cadena de diez caracteres en cada ubicación.

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 inserción aumenta todos los índices de número más alto según el tamaño del texto insertado. El ejemplo calcula previamente el resultado de estos cambios de índice, por lo que que las inserciones posteriores se realicen en el nuevo desplazamiento corregido. Por eso, para insertar con las compensaciones de destino originales de 25, 50 y 75, los índices de inserción reales son:

  • La primera inserción agrega 10 caracteres con el desplazamiento de 25.
  • La segunda inserción agrega 10 caracteres con un desplazamiento de 50 + 10=60.
  • La tercera inserción agrega 10 caracteres con un desplazamiento de 75 + 10 + 10=95.

Borrar texto

Para borrar texto de un documento, primero crea una Range que define el rango de texto que se borrará. Luego, usa el método documents.batchUpdate e incluye una DeleteContentRangeRequest

En la siguiente muestra de código, se indica cómo borrar el texto entre el índice 10. y el índice 24 en el cuerpo de 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()

Escribe hacia atrás para simplificar las cosas. Al igual que con las inserciones, borrar text altera los índices de todo el texto "a continuación" en el segmento. Una vez más, escribir hacia atrás puede simplificar el manejo de los índices.

Mover texto

Para mover texto, bórralo en una ubicación y, luego, insértalo en otra ubicación. Borrar el contenido no proporciona una copia de este (no existe un concepto equivalente de un portapapeles), por lo que primero debes extraer el contenido del rango para poder usar en tu solicitud de inserción de texto.