La API de Google Docs te permite insertar o borrar texto en un documento. Mover texto implica ambas operaciones, precedidas por un get
del contenido.
Puedes insertar o borrar texto en cualquiera de los segmentos (cuerpo, encabezado, pie de página o nota al pie) de una pestaña del documento.
Insertar texto
Para insertar texto en un documento, usa el método documents.batchUpdate
y, luego, incluye un InsertTextRequest
con el texto y la ubicación como carga útil.
En el siguiente ejemplo de código, se muestra cómo insertar una serie de cadenas de texto en ubicaciones de índice especificadas en el cuerpo de un documento. En el ejemplo, se usan tres desplazamientos de destino (25, 50 y 75) y se 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 incrementa todos los índices con números más altos según el tamaño del texto insertado. En el ejemplo, se precalcula el resultado de estos cambios de índice para que las inserciones posteriores se produzcan en el desplazamiento nuevo y corregido. Por lo tanto, para insertar en los desplazamientos de destino originales de 25, 50 y 75, los índices de inserción reales son los siguientes:
- La primera inserción agrega 10 caracteres en el desplazamiento 25.
- La segunda inserción agrega 10 caracteres en el desplazamiento 50 + 10=60.
- La tercera inserción agrega 10 caracteres en el desplazamiento 75 + 10 + 10=95.
Borrar texto
Para borrar texto de un documento, primero construye un objeto Range
que defina el rango de texto que se borrará. Luego, usa el método documents.batchUpdate
y agrega un DeleteContentRangeRequest
.
En el siguiente ejemplo de código, se muestra 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()
Simplifica las cosas escribiendo de atrás hacia adelante. Al igual que con las inserciones, borrar texto altera los índices de todo el texto "debajo" en el segmento. Una vez más, escribir hacia atrás puede simplificar el manejo de los índices.
Cómo mover texto
Para mover texto, debes borrarlo de una ubicación y, luego, insertarlo en otra. Borrar contenido no te da una copia de él (no hay un concepto equivalente de un portapapeles), por lo que primero debes extraer el contenido del rango para poder usarlo en tu solicitud de texto de inserción.
Temas relacionados
- Crea y administra documentos
- Cómo combinar texto en un documento
- Estructura de un documento de Documentos de Google