Praca z listami

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:

  1. Użyj metody, aby utworzyć dokument.documents.create

  2. Użyj metody i podaj, aby dodać treść do dokumentu.documents.batchUpdateInsertTextRequest Do rozdzielania elementów listy użyj znaków nowego wiersza (\n).

  3. W tej samej aktualizacji zbiorczej uwzględnij CreateParagraphBulletsRequest, a Range aby określić zakres tekstu, oraz BulletGlyphPreset aby 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()

Zastąp TAB_ID identyfikatorem karty, która zawiera treść listy, lub pomiń ten parametr, aby domyślnie użyć pierwszej karty w dokumencie.

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

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

Zastąp TAB_ID identyfikatorem karty, która zawiera treść listy, lub pomiń ten parametr, aby domyślnie użyć pierwszej karty w dokumencie.