Praca z listami

Interfejs API Dokumentów Google obsługuje konwersję zwykłych akapitów na listy punktowane i usuwanie punktorów z akapitów.

Konwertowanie akapitu na listę

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

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

Wszystkie akapity, które pokrywają się z podanym zakresem, są wypunktowane. Jeśli określony zakres pokrywa się z tabelą, punktory są stosowane w komórkach tabeli. Poziom zagnieżdżenia każdego akapitu jest określany przez liczenie początkowych znaków tabulacji przed każdym akapitem.

Nie możesz zmienić poziomu zagnieżdżenia dotychczasowego punktu. Zamiast tego musisz usunąć punktor, ustawić początkowe karty na początku akapitu, a potem utworzyć punktor ponownie. Więcej informacji znajdziesz w artykule Usuwanie punktorów z listy.

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

Poniższy przykładowy kod przedstawia żądanie zbiorcze, w którym najpierw wstawiany jest tekst na początku dokumentu, a następnie tworzy listę z akapitów obejmujących pierwsze 50 znaków. Parametr BulletGlyphPreset korzysta z elementu BULLET_ARROW_DIAMOND_DISC, co oznacza, że 3 pierwsze poziomy zagnieżdżenia listy punktowanej są reprezentowane przez strzałkę, romb i dysk.

Java

      List<Request> requests = new ArrayList<>();
      requests.add(new Request().setInsertText(new InsertTextRequest()
              .setText("Item One\n")
              .setLocation(new Location().setIndex(1))));

      requests.add(new Request().setCreateParagraphBullets(
              new CreateParagraphBulletsRequest()
                      .setRange(new Range()
                              .setStartIndex(1)
                              .setEndIndex(50))
                      .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
                },
                'text': 'Item One\n',
            }}, {
            'createParagraphBullets': {
                'range': {
                    'startIndex': 1,
                    'endIndex':  50
                },
                '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ąć punktory z listy akapitu, użyj metody documents.batchUpdate i podaj znak DeleteParagraphBulletsRequest. Dołącz Range, aby wskazać komórki, których dotyczy problem.

Ta metoda usuwa wszystkie punktory, które pokrywają się z podanym zakresem, niezależnie od poziomu zagnieżdżenia. Aby wizualnie zachować poziom zagnieżdżenia, na początku każdego odpowiedniego akapitu dodano wcięcie.

Poniższy przykładowy kod pokazuje żądanie zbiorcze, które usuwa punktory z listy akapitów.

Java

      List<Request> requests = new ArrayList<>();
      requests.add(new Request().setDeleteParagraphBullets(
              new DeleteParagraphBulletsRequest()
                      .setRange(new Range()
                              .setStartIndex(1)
                              .setEndIndex(50))));

      BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
      BatchUpdateDocumentResponse response = docsService.documents()
              .batchUpdate(DOCUMENT_ID, body).execute();

Python

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

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