Estructura de un documento de Documentos de Google

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En esta guía, se describe la estructura interna de un documento de Documentos de Google: los elementos que conforman un documento y la relación entre ellos.

Elementos de nivel superior

Los elementos de nivel superior de un documento incluyen el cuerpo y varios otros atributos del documento como un todo:

document: {
    body: ... ,
    documentStyle: ... ,
    lists: ... ,
    documentId: ... ,
    namedStyles: ... ,
    revisionId: ... ,
    title: ...
}

Para manipular las funciones del documento globales fuera del contenido del cuerpo, casi siempre es mejor usar una o más plantillas de documento, que puedes usar como base para generar documentos nuevos de manera programática.

Contenido del cuerpo

La mayoría de los elementos que puedes usar, o que probablemente quieras, de manera programática son elementos dentro del contenido del cuerpo:

Diagrama del contenido del cuerpo.

Elementos estructurales

El contenido del cuerpo es solo una secuencia de objetos StructuralElement. Un elemento de contenido personaliza cada objeto StructuralElement, como se muestra en el siguiente diagrama:

Diagrama de los elementos estructurales

Los elementos estructurales y sus objetos de contenido contienen todo el texto del documento, imágenes intercaladas, etcétera.

Los párrafos contienen un tipo especial de elemento llamado ParagraphElement que funciona, por ejemplo, como StructuralElement. Un conjunto de tipos de elementos de contenido personaliza su propio ParagraphElement, como se muestra en el siguiente diagrama:

Diagrama de los elementos de párrafo

Para ver un ejemplo de una estructura de documento completa, consulta el volcado de muestra de un documento en formato JSON. En el resultado, puedes ver muchos de los elementos estructurales y de contenido clave, así como el uso de los índices de inicio y finalización, como se describe en la siguiente sección.

Índice de inicio y fin

La mayoría de los elementos dentro del contenido del cuerpo tienen las propiedades startIndex y endIndex. Indican el desplazamiento del comienzo y el final de un elemento en relación con el comienzo de su segmento envolvente.

Los índices se miden en unidades de código UTF-16. Esto significa que los pares subrogados consumen 2 índices. Por ejemplo, el emoji “GRINNING FACE”, CPD, se representaría como “\uD83D\uDE00” y consumiría 2 índices.

Para los elementos dentro de un cuerpo de documento, los índices representan desplazamientos desde el comienzo del contenido del cuerpo, que es el elemento "raíz".

Los tipos de "personalización" de elementos estructurales (SectionBreak, TableOfContents, Table y Paragraph) no tienen estos índices porque su entorno StructuralElement tiene estos campos. Esto también se aplica a los tipos de personalización que contiene un ParagraphElement.

Estructura de párrafo

Un párrafo se compone de lo siguiente:

  • elements: Es una secuencia que contiene una o más instancias de textRun.
  • paragraphStyle: Es un elemento opcional que configura de forma explícita las propiedades de estilo del párrafo.
  • bullet: Es un elemento opcional que proporciona la especificación de la viñeta si el párrafo forma parte de una lista.

Ejecuciones de texto

Un objeto textRun representa una string contigua de texto con el mismo estilo de texto. Un párrafo puede contener varias ejecuciones de texto, pero estas no pueden cruzar los límites del párrafo. Por ejemplo, considera un documento pequeño como el siguiente:

En el siguiente diagrama, se muestra cómo visualizar la secuencia de párrafos en el documento anterior, cada una con sus propias ejecuciones de texto y configuración opcional de viñetas.

Diagrama de las ejecuciones de texto

Cómo acceder a los elementos

Muchos elementos se pueden modificar con el método BatchUpdate. Por ejemplo, con el tipo de solicitud InsertTextRequest, puedes modificar el contenido de cualquier elemento que contenga texto. De manera similar, puedes usar UpdateTextStyleRequest para aplicar formato a un rango de texto contenido en uno o más elementos.

Para leer elementos del documento, usa el método get a fin de obtener un volcado de JSON del documento completo. (Para obtener una manera de hacerlo, consulta el ejemplo Contenido de documentos de salida como JSON). Luego, puedes analizar el JSON resultante para encontrar los valores de los elementos individuales.

Analizar el contenido puede ser útil para varios casos de uso. Considera, por ejemplo, un documento que cataloga una app que cataloga los documentos que encuentra. Esta app podría extraer el título, el ID de revisión y el número de página de inicio de un documento, como se muestra en el siguiente diagrama:

Diagrama de una app de catalogación de documentos.

Como no hay métodos para leer estas configuraciones de forma explícita, tu app debe obtener el documento completo y, luego, analizar el JSON a fin de extraer estos valores.