Praca z listami

Interfejs Google Docs API umożliwia konwertowanie zwykłych akapitów na listy wypunktowane oraz usuwanie z akapitów wypunktowań.

Przekształcanie akapitu w listę

Typowym formatowaniem akapitów jest konwertowanie ich na listę wypunktowaną.

Aby utworzyć listę, użyj metody documents.batchUpdate i podaj wartość CreateParagraphBulletsRequest. Uwzględnij Range, aby określić komórki, na które ma się to odnosić, oraz BulletGlyphPreset, aby ustawić wzór dla wypunktowania.

Wszystkie akapity, które pokrywają się z danym zakresem, są oznaczone punktem. Jeśli podany zakres zachodzi na tabelę, wypunktowania są stosowane w komórkach tabeli. Poziom zagnieżdżenia każdego akapitu jest określany przez zliczanie tabulacji na początku każdego akapitu.

Nie możesz zmieniać poziomu zagnieżżenia istniejącego punktu. Zamiast tego musisz usunąć punkt, ustawić wcięcia przed akapitem, a następnie utworzyć punkt ponownie. Więcej informacji znajdziesz w artykule Usuwanie wypunktowania z listy.

Możesz też użyć CreateParagraphBulletsRequest, aby zmienić styl punktorów na liście.

Poniższy przykładowy kod pokazuje żądanie zbiorcze, które najpierw wstawia tekst na początku dokumentu, a potem tworzy listę z akapitów obejmujących pierwszych 50 znaków. BulletGlyphPreset używa BULLET_ARROW_DIAMOND_DISC, co oznacza, że pierwsze 3 poziomy zagnieżdżenia listy wypunktowanej są oznaczone strzałką, diamentami i dyskiem.

Java

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();

Python

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()

Przekształcanie akapitu w listę.
Rysunek 1. Przekształcanie akapitu w listę.

Usuwanie symboli wypunktowania z listy

Aby usunąć punkty z listy akapitów, użyj metody documents.batchUpdate i podaj wartość DeleteParagraphBulletsRequest. Wpisz Range, aby określić komórki, na które ma być zastosowany filtr.

Metoda usuwa wszystkie punkty, które zachodzą na dany zakres, niezależnie od poziomu zagnieżdżenia. Aby zachować poziom zagnieżdżenia, na początku każdego odpowiedniego akapitu dodano wcięcie.

Poniższy przykładowy kod pokazuje prośbę zbiorczą, która usuwa wypunktowania z listy akapitów.

Java

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();

Python

requests = [
        {
        'deleteParagraphBullets': {
            'range': {
                'startIndex': 1,
                'endIndex':  50,
                'tabId': TAB_ID
            },
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()