Praca z listami

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

Konwertowanie akapitu na listę

Częstą operacja formatowania akapitu jest konwertowanie akapitów na listę punktowaną.

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

Wszystkie akapity, które nakładają się na podany zakres, zostaną umieszczone w punktach. Jeśli podany zakres pokrywa się z tabelą, punktory są stosowane w komórkach tabeli. Poziom zagnieżdżenia każdego akapitu jest określany przez zliczanie początkowych znaków tabulacji przed każdym akapitem.

Nie możesz dostosować poziomu zagnieżdżenia istniejącego punktora. Zamiast tego musisz usunąć punktor, umieścić początkowe karty na początku akapitu i utworzyć punkt ponownie. Więcej informacji znajdziesz w artykule Usuwanie punktorów z listy.

Za pomocą CreateParagraphBulletsRequest możesz też zmienić styl punktor istniejącej listy.

Poniższy przykładowy kod przedstawia żądanie zbiorcze, które najpierw wstawia tekst na początku dokumentu, a potem tworzy listę z akapitów obejmujących pierwsze 50 znaków. BulletGlyphPreset używa BULLET_ARROW_DIAMOND_DISC, co oznacza, że pierwsze 3 poziomy zagnieżdżenia z listy punktowanej są przedstawione za pomocą strzałki, rombu i dysku.

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

Usuwanie punktorów z listy

Aby usunąć punktory z listy akapitów, użyj metody documents.batchUpdate i podaj DeleteParagraphBulletsRequest. Aby wskazać komórki, których dotyczy problem, uwzględnij Range.

Ta metoda usuwa wszystkie punktory, które nakładają się na dany zakres, niezależnie od poziomu zagnieżdżenia. Aby wizualnie zachować poziom zagnieżdżenia, na początku każdego odpowiedniego akapitu dodaliśmy 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()