Praca z listami

Interfejs Google Docs API obsługuje konwertowanie zwykłych akapitów na listy punktowane i usuwanie z nich punktorów.

Przekształcanie akapitu w listę

Częstą operacją formatowania akapitu jest przekształcanie akapitów w listę punktowaną.

Aby utworzyć listę, użyj metody documents.batchUpdate i podaj CreateParagraphBulletsRequest. Użyj znaku Range, aby określić komórki, których dotyczy problem, oraz znaku BulletGlyphPreset, aby ustawić wzór punktorów.

Wszystkie akapity, które pokrywają się z podanym zakresem, są oznaczone punktorem. Jeśli określony zakres nakłada się na tabelę, punktor zostanie zastosowany w komórkach tabeli. Poziom zagnieżdżenia każdego akapitu jest określany przez zliczenie tabulatorów na początku każdego akapitu.

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

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

Poniższy przykładowy kod pokazuje żądanie wsadowe, które najpierw wstawia tekst na początku dokumentu, a następnie tworzy listę z akapitów obejmujących pierwsze 50 znaków. BulletGlyphPreset używa BulletGlyphPreset, co oznacza, że pierwsze 3 poziomy zagnieżdżenia listy punktowanej są reprezentowane przez strzałkę, romb i dysk.BULLET_ARROW_DIAMOND_DISC

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łć akapit w listę.
Rysunek 1. Przekształć akapit w listę.

Usuwanie punktorów z listy

Aby usunąć punktor z listy akapitów, użyj metody documents.batchUpdate i podaj DeleteParagraphBulletsRequest. Dołącz Range, aby określić komórki, których dotyczy problem.

Metoda usuwa wszystkie punktor, które nakładają się na podany zakres, niezależnie od poziomu zagnieżdżenia. Aby wizualnie zachować poziom zagnieżdżenia, na początku każdego odpowiedniego akapitu dodawane jest wcięcie.

Poniższy przykładowy kod pokazuje żądanie wsadowe, które usuwa punktor 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()