API Google Docs поддерживает преобразование простых абзацев в маркированные списки и удаление маркеров из абзацев.
Преобразовать абзац в список
Распространенной операцией форматирования абзацев является преобразование абзацев в маркированный список.
Чтобы создать список, используйте метод documents.batchUpdate
и укажите CreateParagraphBulletsRequest
. Включите Range
для указания затронутых ячеек и BulletGlyphPreset
для задания шаблона маркера.
Все абзацы, перекрывающие указанный диапазон, маркируются. Если указанный диапазон перекрывается таблицей, маркеры применяются к ячейкам таблицы. Уровень вложенности каждого абзаца определяется подсчётом начальных символов табуляции перед каждым абзацем.
Уровень вложенности существующего маркера изменить невозможно. Вместо этого необходимо удалить маркер, установить начальные табуляции перед абзацем, а затем создать маркер заново. Подробнее см. в разделе Удаление маркеров из списка .
Вы также можете использовать CreateParagraphBulletsRequest
для изменения стиля маркеров существующего списка.
В следующем примере кода показан пакетный запрос, который сначала вставляет текст в начало документа, а затем создаёт список из абзацев, охватывающих первые 50 символов. BulletGlyphPreset
использует BULLET_ARROW_DIAMOND_DISC
, что означает, что первые три уровня вложенности маркированного списка представлены стрелкой, ромбом и диском.
Ява
List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText("Item One\n") .setLocation(new Location().setIndex(1).setTabId(TAB_ID)))); requests.add(new Request().setCreateParagraphBullets( new CreateParagraphBulletsRequest() .setRange(new Range() .setStartIndex(1) .setEndIndex(50) .setTabId(TAB_ID)) .setBulletPreset("BULLET_ARROW_DIAMOND_DISC"))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
Питон
requests = [ { 'insertText': { 'location': { 'index': 1, 'tabId': TAB_ID }, 'text': 'Item One\n', }}, { 'createParagraphBullets': { 'range': { 'startIndex': 1, 'endIndex': 50, 'tabId': TAB_ID }, 'bulletPreset': 'BULLET_ARROW_DIAMOND_DISC', } } ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()
Удалить маркеры из списка
Чтобы удалить маркеры из списка абзацев, используйте метод documents.batchUpdate
и отправьте запрос DeleteParagraphBulletsRequest
. Укажите Range
, чтобы указать затронутые ячейки.
Метод удаляет все маркеры, перекрывающие заданный диапазон, независимо от уровня вложенности. Для визуального сохранения уровня вложенности в начало каждого соответствующего абзаца добавляется отступ.
В следующем примере кода показан пакетный запрос, который удаляет маркеры из списка абзацев.
Ява
List<Request> requests = new ArrayList<>(); requests.add(new Request().setDeleteParagraphBullets( new DeleteParagraphBulletsRequest() .setRange(new Range() .setStartIndex(1) .setEndIndex(50) .setTabId(TAB_ID)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(DOCUMENT_ID, body).execute();
Питон
requests = [ { 'deleteParagraphBullets': { 'range': { 'startIndex': 1, 'endIndex': 50, 'tabId': TAB_ID }, } } ] result = service.documents().batchUpdate( documentId=DOCUMENT_ID, body={'requests': requests}).execute()