Interfejs Google Docs API umożliwia tworzenie list w nowych dokumentach, przekształcanie istniejących zwykłych akapitów w listy wypunktowane i usuwanie punktorów z akapitów.
Tworzenie listy numerowanej w nowym dokumencie
Interfejs Docs API umożliwia tworzenie listy numerowanej w nowym dokumencie przez wstawienie tekstu, a następnie zastosowanie do niego stylu listy w ramach pojedynczego żądania zbiorczego.
Aby utworzyć listę numerowaną w nowym dokumencie:
Użyj metody, aby utworzyć dokument.
documents.createUżyj metody i podaj, aby dodać treść do dokumentu.
documents.batchUpdateInsertTextRequestDo rozdzielania elementów listy użyj znaków nowego wiersza (\n).W tej samej aktualizacji zbiorczej uwzględnij
CreateParagraphBulletsRequest, aRangeaby określić zakres tekstu, orazBulletGlyphPresetaby ustawić wzorzec numerowania.
Poniższy przykładowy kod pokazuje, jak utworzyć dokument, a następnie wstawić 3 elementy jako listę numerowaną. BulletGlyphPreset używa NUMBERED_DECIMAL_ALPHA_ROMAN do formatowania listy. Oznacza to, że pierwsze 3 poziomy zagnieżdżenia listy numerowanej są reprezentowane przez liczbę dziesiętną, małą literę i małą cyfrę rzymską.
Java
Document doc = new Document().setTitle("New List Document"); doc = docsService.documents().create(doc).execute(); String documentId = doc.getDocumentId(); List<Request> requests = new ArrayList<>(); requests.add(new Request().setInsertText(new InsertTextRequest() .setText("Item 1\nItem 2\nItem 3\n") .setLocation(new Location().setIndex(1).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setCreateParagraphBullets( new CreateParagraphBulletsRequest() .setRange(new Range() .setStartIndex(1) .setEndIndex(22) .setTabId(<var>TAB_ID</var>)) .setBulletPreset("NUMBERED_DECIMAL_ALPHA_ROMAN"))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); docsService.documents().batchUpdate(documentId, body).execute(); System.out.println("Created document with ID: " + documentId);
Python
title = 'New List Document' body = {'title': title} doc = service.documents().create(body=body).execute() document_id = doc.get('documentId') requests = [ { 'insertText': { 'location': { 'index': 1, 'tabId': <var>TAB_ID</var> }, 'text': 'Item 1\nItem 2\nItem 3\n' } }, { 'createParagraphBullets': { 'range': { 'startIndex': 1, 'endIndex': 22, 'tabId': <var>TAB_ID</var> }, 'bulletPreset': 'NUMBERED_DECIMAL_ALPHA_ROMAN' } } ] result = service.documents().batchUpdate( documentId=document_id, body={'requests': requests}).execute() print(f"Created document with ID: {document_id}")
Zastąp TAB_ID identyfikatorem karty , która zawiera treść listy.
Przekształcanie akapitu w listę
Typową operacją formatowania akapitu jest przekształcanie istniejących akapitów w listę wypunktowaną.
Aby utworzyć listę, użyj
documents.batchUpdate
metody i podaj
CreateParagraphBulletsRequest.
Uwzględnij Range, aby
określić tekst, którego dotyczy zmiana, oraz
BulletGlyphPreset
, aby ustawić wzorzec punktora.
Wszystkie akapity, które nakładają się na dany zakres, są wypunktowane. Jeśli określony zakres nakłada się na tabelę, punkty są stosowane w komórkach tabeli. Poziom zagnieżdżenia każdego akapitu jest określany przez zliczenie wiodących tabulatorów przed każdym akapitem.
Nie możesz dostosować poziomu zagnieżdżenia istniejącego punktora. Zamiast tego musisz usunąć punkt, ustawić wiodące tabulatory przed akapitem, a następnie ponownie utworzyć punkt. 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 pokazuje żądanie zbiorcze, 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 BULLET_ARROW_DIAMOND_DISC, co oznacza, że pierwsze 3 poziomy zagnieżdżenia listy wypunktowanej 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).setTabId(<var>TAB_ID</var>)))); requests.add(new Request().setCreateParagraphBullets( new CreateParagraphBulletsRequest() .setRange(new Range() .setStartIndex(1) .setEndIndex(50) .setTabId(<var>TAB_ID</var>)) .setBulletPreset("BULLET_ARROW_DIAMOND_DISC"))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
Python
requests = [ { 'insertText': { 'location': { 'index': 1, 'tabId': <var>TAB_ID</var> }, 'text': 'Item One\n', }}, { 'createParagraphBullets': { 'range': { 'startIndex': 1, 'endIndex': 50, 'tabId': <var>TAB_ID</var> }, 'bulletPreset': 'BULLET_ARROW_DIAMOND_DISC', } } ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()
Usuwanie punktorów z listy
Aby usunąć punkty z listy akapitów, użyj
documents.batchUpdate
metody i podaj
DeleteParagraphBulletsRequest.
Uwzględnij Range, aby
określić tekst, którego dotyczy zmiana.
Metoda usuwa wszystkie punkty, 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 dodawane jest wcięcie.
Poniższy przykładowy kod pokazuje żądanie zbiorcze, które usuwa punkty 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(<var>TAB_ID</var>)))); BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests); BatchUpdateDocumentResponse response = docsService.documents() .batchUpdate(<var>DOCUMENT_ID</var>, body).execute();
Python
requests = [ { 'deleteParagraphBullets': { 'range': { 'startIndex': 1, 'endIndex': 50, 'tabId': <var>TAB_ID</var> }, } } ] result = service.documents().batchUpdate( documentId=<var>DOCUMENT_ID</var>, body={'requests': requests}).execute()