Class ContainerElement

ContainerElement

Elemento genérico que puede contener otros elementos. Todos los elementos que pueden contener elementos secundarios, como Paragraph, heredar de ContainerElement.

Métodos

MétodoTipo de datos que se muestraDescripción breve
asBody()BodyMuestra el elemento actual como una Body.
asEquation()EquationMuestra el elemento actual como un Equation.
asFooterSection()FooterSectionMuestra el elemento actual como una FooterSection.
asFootnoteSection()FootnoteSectionMuestra el elemento actual como una FootnoteSection.
asHeaderSection()HeaderSectionMuestra el elemento actual como una HeaderSection.
asListItem()ListItemMuestra el elemento actual como una ListItem.
asParagraph()ParagraphMuestra el elemento actual como una Paragraph.
asTable()TableMuestra el elemento actual como una Table.
asTableCell()TableCellMuestra el elemento actual como una TableCell.
asTableOfContents()TableOfContentsMuestra el elemento actual como una TableOfContents.
asTableRow()TableRowMuestra el elemento actual como una TableRow.
clear()ContainerElementBorra el contenido del elemento.
copy()ContainerElementMuestra una copia profunda y separada del elemento actual.
editAsText()TextObtiene una versión Text del elemento actual para su edición.
findElement(elementType)RangeElementBusca en el contenido del elemento un elemento subordinado del tipo especificado.
findElement(elementType, from)RangeElementBusca en el contenido del elemento un elemento subordinado del tipo especificado, comenzando por el especificado RangeElement.
findText(searchPattern)RangeElementBusca el patrón de texto especificado en el contenido del elemento mediante expresiones regulares.
findText(searchPattern, from)RangeElementBusca el patrón de texto especificado en el contenido del elemento, a partir de un valor determinado. resultado de la búsqueda.
getAttributes()ObjectRecupera los atributos del elemento.
getChild(childIndex)ElementRecupera el elemento secundario del índice secundario especificado.
getChildIndex(child)IntegerRecupera el índice secundario del elemento secundario especificado.
getLinkUrl()StringRecupera la URL del vínculo.
getNextSibling()ElementRecupera el elemento del mismo nivel del elemento.
getNumChildren()IntegerRecupera la cantidad de elementos secundarios.
getParent()ContainerElementRecupera el elemento superior del elemento.
getPreviousSibling()ElementRecupera el elemento del mismo nivel anterior.
getText()StringRecupera el contenido del elemento como una cadena de texto.
getTextAlignment()TextAlignmentObtiene la alineación del texto.
getType()ElementTypeRecupera el ElementType del elemento.
isAtDocumentEnd()BooleanDetermina si el elemento se encuentra al final de Document.
merge()ContainerElementCombina el elemento con el elemento del mismo nivel anterior del mismo tipo.
removeFromParent()ContainerElementQuita el elemento de su elemento superior.
replaceText(searchPattern, replacement)ElementReemplaza todos los casos de un patrón de texto dado por una cadena de reemplazo determinada, mediante la fórmula con expresiones regulares.
setAttributes(attributes)ContainerElementEstablece los atributos del elemento.
setLinkUrl(url)ContainerElementEstablece la URL del vínculo.
setTextAlignment(textAlignment)ContainerElementEstablece la alineación del texto.

Documentación detallada

asBody()

Muestra el elemento actual como una Body.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

Body: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asEquation()

Muestra el elemento actual como un Equation.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

Equation: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asFooterSection()

Muestra el elemento actual como una FooterSection.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

FooterSection: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asFootnoteSection()

Muestra el elemento actual como una FootnoteSection.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

FootnoteSection: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asHeaderSection()

Muestra el elemento actual como una HeaderSection.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

HeaderSection: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asListItem()

Muestra el elemento actual como una ListItem.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

ListItem: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asParagraph()

Muestra el elemento actual como una Paragraph.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

Paragraph: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asTable()

Muestra el elemento actual como una Table.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

Table: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asTableCell()

Muestra el elemento actual como una TableCell.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

TableCell: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asTableOfContents()

Muestra el elemento actual como una TableOfContents.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

TableOfContents: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

asTableRow()

Muestra el elemento actual como una TableRow.

Usa este método para facilitar la función de autocompletar cuando se sepa que un determinado elemento pertenece a un elemento específico. el tipo de letra.

Volver

TableRow: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

clear()

Borra el contenido del elemento.

Volver

ContainerElement: Es el elemento actual.


copy()

Muestra una copia profunda y separada del elemento actual.

También se copian los elementos secundarios presentes en el elemento. El elemento nuevo no tiene un superior.

Volver

ContainerElement: Es la copia nueva.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

editAsText()

Obtiene una versión Text del elemento actual para su edición.

Usa editAsText para manipular el contenido de los elementos como texto enriquecido. El modo editAsText ignora los elementos que no son de texto (como InlineImage y HorizontalRule).

Los elementos secundarios que estén completamente contenidos dentro de un rango de texto borrado se quitarán de este.

var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();

// Insert two paragraphs separated by a paragraph containing an
// horizontal rule.
body.insertParagraph(0, "An editAsText sample.");
body.insertHorizontalRule(0);
body.insertParagraph(0, "An example.");

// Delete " sample.\n\n An" removing the horizontal rule in the process.
body.editAsText().deleteText(14, 25);

Volver

Text: Es una versión en texto del elemento actual.


findElement(elementType)

Busca en el contenido del elemento un elemento subordinado del tipo especificado.

Parámetros

NombreTipoDescripción
elementTypeElementTypeEl tipo de elemento que se buscará.

Volver

RangeElement: Es un resultado de la búsqueda que indica la posición del elemento de búsqueda.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

findElement(elementType, from)

Busca en el contenido del elemento un elemento subordinado del tipo especificado, comenzando por el especificado RangeElement.

var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();

// Define the search parameters.
var searchType = DocumentApp.ElementType.PARAGRAPH;
var searchHeading = DocumentApp.ParagraphHeading.HEADING1;
var searchResult = null;

// Search until the paragraph is found.
while (searchResult = body.findElement(searchType, searchResult)) {
  var par = searchResult.getElement().asParagraph();
  if (par.getHeading() == searchHeading) {
    // Found one, update and stop.
    par.setText('This is the first header.');
    return;
  }
}

Parámetros

NombreTipoDescripción
elementTypeElementTypeEl tipo de elemento que se buscará.
fromRangeElementEs el resultado de la búsqueda.

Volver

RangeElement: Es un resultado de la búsqueda que indica la siguiente posición del elemento de búsqueda.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

findText(searchPattern)

Busca el patrón de texto especificado en el contenido del elemento mediante expresiones regulares.

Un subconjunto de las funciones de expresión regular de JavaScript no es totalmente compatible, como grupos de captura y modificadores de modo.

El patrón de expresión regular proporcionado se compara independientemente con cada bloque de texto. contenidos en el elemento actual.

Parámetros

NombreTipoDescripción
searchPatternStringel patrón a buscar

Volver

RangeElement: Es un resultado de la búsqueda que indica la posición del texto de búsqueda o nulo si no hay un valor. coincidencia

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

findText(searchPattern, from)

Busca el patrón de texto especificado en el contenido del elemento, a partir de un valor determinado. resultado de la búsqueda.

Un subconjunto de las funciones de expresión regular de JavaScript no es totalmente compatible, como grupos de captura y modificadores de modo.

El patrón de expresión regular proporcionado se compara independientemente con cada bloque de texto. contenidos en el elemento actual.

Parámetros

NombreTipoDescripción
searchPatternStringel patrón a buscar
fromRangeElementel resultado de la búsqueda para buscar

Volver

RangeElement: Es un resultado de la búsqueda que indica la siguiente posición del texto de búsqueda o un valor nulo si no hay un valor. coincidencia

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getAttributes()

Recupera los atributos del elemento.

El resultado es un objeto que contiene una propiedad para cada atributo de elemento válido en el que cada el nombre de la propiedad corresponde a un elemento de la enumeración DocumentApp.Attribute.

var doc = DocumentApp.getActiveDocument();
var documentTab = doc.getActiveTab().asDocumentTab();
var body = documentTab.getBody();

// Append a styled paragraph.
var par = body.appendParagraph('A bold, italicized paragraph.');
par.setBold(true);
par.setItalic(true);

// Retrieve the paragraph's attributes.
var atts = par.getAttributes();

// Log the paragraph attributes.
for (var att in atts) {
  Logger.log(att + ":" + atts[att]);
}

Volver

Object: Son los atributos del elemento.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getChild(childIndex)

Recupera el elemento secundario del índice secundario especificado.

var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();

// Obtain the first element in the tab.
var firstChild = body.getChild(0);

// If it's a paragraph, set its contents.
if (firstChild.getType() == DocumentApp.ElementType.PARAGRAPH) {
  firstChild.asParagraph().setText("This is the first paragraph.");
}

Parámetros

NombreTipoDescripción
childIndexIntegerEl índice del elemento secundario que se recuperará.

Volver

Element: Es el elemento secundario en el índice especificado.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getChildIndex(child)

Recupera el índice secundario del elemento secundario especificado.

Parámetros

NombreTipoDescripción
childElementEl elemento secundario para el que se recupera el índice.

Volver

Integer: Es el índice secundario.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getLinkUrl()

Recupera la URL del vínculo.

Volver

String: Es la URL del vínculo; o un valor nulo si el elemento contiene varios valores para este atributo.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getNextSibling()

Recupera el elemento del mismo nivel del elemento.

El elemento del mismo nivel tiene el mismo elemento superior y sigue al elemento actual.

Volver

Element: Es el siguiente elemento del mismo nivel.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getNumChildren()

Recupera la cantidad de elementos secundarios.

var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();

// Log the number of elements in the tab.
Logger.log("There are " + body.getNumChildren() +
    " elements in the tab's body.");

Volver

Integer: Es la cantidad de elementos secundarios.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getParent()

Recupera el elemento superior del elemento.

El elemento superior contiene el elemento actual.

Volver

ContainerElement: Es el elemento superior.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getPreviousSibling()

Recupera el elemento del mismo nivel anterior.

El elemento del mismo nivel anterior tiene el mismo elemento superior y precede al elemento actual.

Volver

Element: Es el elemento del mismo nivel anterior.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getText()

Recupera el contenido del elemento como una cadena de texto.

Volver

String: Es el contenido del elemento como una cadena de texto.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getTextAlignment()

Obtiene la alineación del texto. Los tipos de alineación disponibles son DocumentApp.TextAlignment.NORMAL, DocumentApp.TextAlignment.SUBSCRIPT y DocumentApp.TextAlignment.SUPERSCRIPT.

Volver

TextAlignment: Es el tipo de alineación del texto, o null si el texto contiene varios tipos de texto. alineaciones o si nunca se estableció la alineación del texto

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

getType()

Recupera el ElementType del elemento.

Usa getType() para determinar el tipo exacto de un elemento determinado.

var doc = DocumentApp.getActiveDocument();
var documentTab = doc.getActiveTab().asDocumentTab();
var body = documentTab.getBody();

// Obtain the first element in the active tab's body.

var firstChild = body.getChild(0);

// Use getType() to determine the element's type.
if (firstChild.getType() == DocumentApp.ElementType.PARAGRAPH) {
  Logger.log('The first element is a paragraph.');
} else {
  Logger.log('The first element is not a paragraph.');
}

Volver

ElementType: Es el tipo de elemento.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

isAtDocumentEnd()

Determina si el elemento se encuentra al final de Document.

Volver

Boolean: Indica si el elemento está al final de la pestaña.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

merge()

Combina el elemento con el elemento del mismo nivel anterior del mismo tipo.

Solo se pueden combinar elementos de la misma ElementType. Cualquier elemento secundario que se incluya en El elemento actual se mueve al elemento del mismo nivel anterior.

Se quitará el elemento actual del documento.

var doc = DocumentApp.getActiveDocument();
var documentTab = doc.getActiveTab().asDocumentTab();
var body = documentTab.getBody();

// Example 1: Merge paragraphs
// Append two paragraphs to the document's active tab.
var par1 = body.appendParagraph('Paragraph 1.');
var par2 = body.appendParagraph('Paragraph 2.');
// Merge the newly added paragraphs into a single paragraph.
par2.merge();

// Example 2: Merge table cells
// Create a two-dimensional array containing the table's cell contents.
var cells = [
['Row 1, Cell 1', 'Row 1, Cell 2'],
['Row 2, Cell 1', 'Row 2, Cell 2']
];
// Build a table from the array.
var table = body.appendTable(cells);
// Get the first row in the table.
 var row = table.getRow(0);
// Get the two cells in this row.
var cell1 = row.getCell(0);
var cell2 = row.getCell(1);
// Merge the current cell into its preceding sibling element.
var merged = cell2.merge();

Volver

ContainerElement: Es el elemento combinado.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

removeFromParent()

Quita el elemento de su elemento superior.

var doc = DocumentApp.getActiveDocument();
var documentTab = doc.getActiveTab().asDocumentTab()
var body = documentTab.getBody();

// Remove all images in the active tab's body.
var imgs = body.getImages();
for (var i = 0; i < imgs.length; i++) {
  imgs[i].removeFromParent();
}

Volver

ContainerElement: Es el elemento que se quitó.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

replaceText(searchPattern, replacement)

Reemplaza todos los casos de un patrón de texto dado por una cadena de reemplazo determinada, mediante la fórmula con expresiones regulares.

El patrón de búsqueda se pasa como una cadena, no como un objeto de expresión regular de JavaScript. Debido a esto, deberás escapar cualquier barra inversa en el patrón.

Este método usa el estándar RE2 de Google expresión de comandos, que limita la sintaxis compatible.

El patrón de expresión regular proporcionado se compara independientemente con cada bloque de texto. contenidos en el elemento actual.

var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody();

// Clear the text surrounding "Apps Script", with or without text.
body.replaceText("^.*Apps ?Script.*$", "Apps Script");

Parámetros

NombreTipoDescripción
searchPatternStringel patrón de regex para buscar
replacementStringel texto que se usará como reemplazo

Volver

Element: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

setAttributes(attributes)

Establece los atributos del elemento.

El parámetro de atributos especificados debe ser un objeto en el que cada nombre de propiedad sea un elemento la enumeración DocumentApp.Attribute y el valor de cada propiedad es el nuevo que se debe se aplicó.

var doc = DocumentApp.getActiveDocument();
var documentTab = doc.getActiveTab().asDocumentTab();
var body = documentTab.getBody();

// Define a custom paragraph style.
var style = {};
style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] =
    DocumentApp.HorizontalAlignment.RIGHT;
style[DocumentApp.Attribute.FONT_FAMILY] = 'Calibri';
style[DocumentApp.Attribute.FONT_SIZE] = 18;
style[DocumentApp.Attribute.BOLD] = true;

// Append a plain paragraph.
var par = body.appendParagraph('A paragraph with custom style.');

// Apply the custom style.
par.setAttributes(style);

Parámetros

NombreTipoDescripción
attributesObjectLos atributos del elemento.

Volver

ContainerElement: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

setLinkUrl(url)

Establece la URL del vínculo.

Parámetros

NombreTipoDescripción
urlStringla URL del vínculo

Volver

ContainerElement: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents

setTextAlignment(textAlignment)

Establece la alineación del texto. Los tipos de alineación disponibles son DocumentApp.TextAlignment.NORMAL, DocumentApp.TextAlignment.SUBSCRIPT y DocumentApp.TextAlignment.SUPERSCRIPT.

// Make the entire first paragraph in the active tab be superscript.
var documentTab = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab();
var text = documentTab.getBody().getParagraphs()[0].editAsText();
text.setTextAlignment(DocumentApp.TextAlignment.SUPERSCRIPT);

Parámetros

NombreTipoDescripción
textAlignmentTextAlignmentel tipo de alineación de texto que se aplicará

Volver

ContainerElement: Es el elemento actual.

Autorización

Las secuencias de comandos que usan este método requieren autorización con uno o más de los siguientes alcances:

  • https://www.googleapis.com/auth/documents.currentonly
  • https://www.googleapis.com/auth/documents