API Google Docs позволяет вставлять или удалять текст в документе. Перемещение текста включает в себя обе операции, которым предшествует get содержимого.
В любом из разделов документа (основной текст, верхний колонтитул, нижний колонтитул или сноска) можно вставлять или удалять текст. Дополнительную информацию см. в разделе «Работа с вкладками ».
Вставить текст
Для вставки текста в документ используйте метод documents.batchUpdate и добавьте в качестве полезной нагрузки объект InsertTextRequest , содержащий текст и адрес.
Приведенный ниже пример кода демонстрирует, как можно вставить серию текстовых строк в указанные индексы в теле документа. В примере используются три целевых смещения (25, 50 и 75), и в каждое из них вставляется десятисимвольная строка.
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text1) .setLocation(new Location().setIndex(25).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text2) .setLocation(new Location().setIndex(50).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setInsertText(new InsertTextRequest() .setText(text3) .setLocation(new Location().setIndex(75).setTabId(<var>TAB_ID</var>)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text1, 'location' => array( 'index' => 25, 'tabId' => <var>TAB_ID</var>, ), ), )); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text2, 'location' => array( 'index' => 50, 'tabId' => <var>TAB_ID</var>, ), ), )); $requests[] = new Google_Service_Docs_Request(array( 'insertText' => array( 'text' => $text3, 'location' => array( 'index' => 75, 'tabId' => <var>TAB_ID</var>, ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate($<var>DOCUMENT_ID</var>, $batchUpdateRequest);
Python
requests = [ { 'insertText': { 'location': { 'index': 25, 'tabId': <var>TAB_ID</var> }, 'text': text1 } }, { 'insertText': { 'location': { 'index': 50, 'tabId': <var>TAB_ID</var> }, 'text': text2 } }, { 'insertText': { 'location': { 'index': 75, 'tabId': <var>TAB_ID</var> }, 'text': text3 } }, ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()
При каждой вставке все индексы с более высокими номерами увеличиваются на величину вставляемого текста. В примере предварительно вычисляется результат этих изменений индексов, так что последующие вставки происходят с новым, скорректированным смещением. Таким образом, для вставки с исходными целевыми смещениями 25, 50 и 75 фактические индексы вставки будут следующими:
- Первая вставка добавляет 10 символов со смещением 25.
- Вторая вставка добавляет 10 символов со смещением 50+10=60.
- Третья вставка добавляет 10 символов со смещением 75+10+10=95.
Удалить текст
Чтобы удалить текст из документа, сначала создайте объект Range , определяющий диапазон удаляемого текста. Затем используйте метод documents.batchUpdate и добавьте запрос DeleteContentRangeRequest .
Приведённый ниже пример кода показывает, как можно удалить текст между индексами 10 и 24 в теле документа.
Java
List<Request> requests = new ArrayList<>(); requests.add(new Request().setDeleteContentRange( new DeleteContentRangeRequest() .setRange(new Range() .setStartIndex(10) .setEndIndex(24) .setTabId(<var>TAB_ID</var>)) )); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
PHP
$requests = array(); $requests[] = new Google_Service_Docs_Request(array( 'deleteContentRange' => array( 'range' => array( 'startIndex' => 10, 'endIndex' => 24, 'tabId' => <var>TAB_ID</var> ), ), )); $batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array( 'requests' => $requests )); $response = $service->documents->batchUpdate(<var>DOCUMENT_ID</var>, $batchUpdateRequest);
Python
requests = [ { 'deleteContentRange': { 'range': { 'startIndex': 10, 'endIndex': 24, 'tabId': <var>TAB_ID</var> } } }, ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()
Как и в случае вставки, удаление текста изменяет индексы всего текста, следующего за ним в сегменте. Опять же, запись в обратном порядке может упростить работу с индексами.
Переместить текст
Чтобы переместить текст, нужно удалить его в одном месте, а затем вставить в другое. Удаление содержимого не создает его копию (аналога буфера обмена не существует), поэтому сначала необходимо извлечь содержимое диапазона, чтобы использовать его в запросе на вставку текста.