Trabalhar com listas

Na API Google Docs, é possível converter parágrafos simples em listas com marcadores e remover marcadores de parágrafos.

Converter um parágrafo em lista

Uma operação comum de formatação de parágrafos é converter parágrafos em uma lista com marcadores.

Para criar uma lista, use o método documents.batchUpdate e forneça um CreateParagraphBulletsRequest. Inclua uma Range para especificar as células afetadas e uma BulletGlyphPreset para definir o padrão do marcador.

Todos os parágrafos que se sobrepõem ao intervalo especificado estão marcados. Se o intervalo especificado se sobrepuser a uma tabela, os marcadores serão aplicados nas células da tabela. O nível de aninhamento de cada parágrafo é determinado pela contagem das guias iniciais na frente de cada parágrafo.

Não é possível ajustar o nível de aninhamento de marcadores existentes. Em vez disso, exclua o marcador, defina as guias iniciais na frente do parágrafo e crie o marcador novamente. Para saber mais, consulte Remover marcadores de uma lista.

Também é possível usar CreateParagraphBulletsRequest para mudar o estilo do marcador de uma lista.

O exemplo de código a seguir mostra uma solicitação em lote que primeiro insere texto no início do documento e, em seguida, cria uma lista dos parágrafos que abrangem os primeiros 50 caracteres. O BulletGlyphPreset usa BULLET_ARROW_DIAMOND_DISC, o que significa que os três primeiros níveis de aninhamento da lista com marcadores são representados por uma seta, um losango e um disco.

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

Converta um parágrafo em uma lista.
Figura 1. Converta um parágrafo em uma lista.

Remover marcadores de uma lista

Para remover marcadores de uma lista de parágrafos, use o método documents.batchUpdate e forneça um DeleteParagraphBulletsRequest. Inclua um Range para especificar as células afetadas.

O método exclui todos os marcadores que se sobrepõem ao intervalo especificado, independentemente do nível de aninhamento. Para preservar visualmente o nível de aninhamento, o recuo é adicionado ao início de cada parágrafo correspondente.

O exemplo de código a seguir mostra uma solicitação em lote que exclui marcadores de uma lista de parágrafos.

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