Работа со списками

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()
Преобразовать абзац в список.
Рисунок 1. Преобразование абзаца в список.

Удалить маркеры из списка

Чтобы удалить маркеры из списка абзацев, используйте метод 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()