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

API Документов Google поддерживает преобразование простых абзацев в маркированные списки и удаление маркеров из абзацев.

Преобразование абзаца в список

Распространенной операцией форматирования абзацев является преобразование абзацев в маркированный список.

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