Trabajo con listas

La API de Documentos de Google admite la conversión de párrafos sin formato en listas con viñetas y la eliminación de viñetas de los párrafos.

Cómo convertir un párrafo en una lista

Una operación de formato de párrafo común es convertirlos en una lista con viñetas.

Para crear una lista, usa el método documents.batchUpdate y proporciona un CreateParagraphBulletsRequest. Incluye una Range para especificar las celdas afectadas y una BulletGlyphPreset para establecer el patrón de la viñeta.

Todos los párrafos que se superponen con el rango dado aparecen como viñetas. Si el rango especificado se superpone con una tabla, las viñetas se aplican dentro de las celdas de la tabla. El nivel de anidamiento de cada párrafo se determina mediante el recuento de las pestañas principales al frente de cada párrafo.

No puedes ajustar el nivel de anidamiento de una viñeta existente. En su lugar, debes borrar la viñeta, establecer las pestañas iniciales al frente del párrafo y, luego, crear la viñeta de nuevo. Para obtener más información, consulta Cómo quitar viñetas de una lista.

También puedes usar CreateParagraphBulletsRequest para cambiar el diseño de viñetas de una lista existente.

En la siguiente muestra de código, aparece una solicitud por lotes que primero inserta texto al comienzo del documento y, luego, crea una lista a partir de los párrafos que abarcan los primeros 50 caracteres. BulletGlyphPreset usa BULLET_ARROW_DIAMOND_DISC, lo que significa que los tres primeros niveles de anidamiento de la lista con viñetas se representan con una flecha, un diamante y un 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()

Convierte un párrafo en una lista.
Figura 1. Convierte un párrafo en una lista.

Cómo quitar viñetas de una lista

Para quitar viñetas de una lista de párrafos, usa el método documents.batchUpdate y proporciona un DeleteParagraphBulletsRequest. Incluye una Range para especificar las celdas afectadas.

El método borra todas las viñetas que se superponen con el rango determinado, sin importar el nivel de anidación. Para preservar visualmente el nivel de anidación, se agrega una sangría al comienzo de cada párrafo correspondiente.

En la siguiente muestra de código, se indica una solicitud por lotes que borra viñetas de una lista de párrafos.

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