Google Apps Script te permite crear y modificar documentos de Google de forma programática, así como personalizar la interfaz de usuario con nuevos menús, cuadros de diálogo y barras laterales.
Conceptos básicos
Apps Script puede interactuar con Documentos de Google de dos maneras generales: cualquier secuencia de comandos puede crear o modificar un documento si el usuario de la secuencia de comandos tiene los permisos adecuados para el documento, y una secuencia de comandos también puede estar vinculada a un documento, lo que le otorga habilidades especiales para alterar la interfaz de usuario o responder cuando se abre el documento. Para crear una secuencia de comandos vinculada a un contenedor desde Documentos de Google, haz clic en Extensiones > Apps Script.
En cualquier caso, es sencillo interactuar con un documento de Documentos de Google a través del servicio de Documentos de Apps Script, como se demuestra en el siguiente ejemplo.
function createDoc() { var doc = DocumentApp.create('Sample Document'); var documentTab = doc.getTab('t.0').asDocumentTab(); var body = documentTab.getBody(); var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']]; body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1); table = body.appendTable(rowsData); table.getRow(0).editAsText().setBold(true); }
El código anterior crea un documento nuevo en el Google Drive del usuario, luego recupera la pestaña con el ID t.0
(la primera pestaña predeterminada), inserta un párrafo que contiene el mismo texto que el nombre del documento, le aplica el estilo de encabezado a ese párrafo y agrega una tabla basada en los valores de un array bidimensional. El script podría realizar estos cambios en un documento existente con la misma facilidad reemplazando la llamada a DocumentApp.create()
por DocumentApp.openById()
o openByUrl()
.
Para las secuencias de comandos creadas dentro de un documento (vinculadas al contenedor), usa DocumentApp.getActiveDocument()
y Document.getActiveTab()
.
Estructura de un documento
Desde la perspectiva de Apps Script, un documento de Documentos de Google se estructura de forma muy similar a un documento HTML, es decir, un documento se compone de uno o más objetos Tab
, cada uno de los cuales contiene elementos (como un Paragraph
o un Table
) que a menudo contienen otros elementos. La mayoría de las secuencias de comandos que modifican un documento de Documentos de Google comienzan con una llamada a getTab()
y asDocumentTab()
, seguida de getBody()
, ya que Body
es un elemento central que contiene todos los demás elementos de una pestaña, excepto HeaderSection
, FooterSection
y cualquier Footnotes
.
Sin embargo, existen reglas sobre qué tipos de elementos pueden contener otros tipos. Además, el servicio de Documentos en Apps Script solo puede insertar ciertos tipos de elementos en otros elementos. El siguiente árbol muestra qué elementos puede contener un determinado tipo de elemento.
Los elementos que se muestran en negrita se pueden insertar, mientras que los que no están en negrita solo se pueden manipular en su lugar.
- Document
- Tab
- DocumentTab
- Cuerpo
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Texto
- UnsupportedElement (número de página, etc.)
- Párrafo
- HorizontalRule
- InlineDrawing
- InlineImage
- Texto
- UnsupportedElement (número de página, etc.)
- Tabla
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- Texto
- UnsupportedElement (número de página, etc.)
- Párrafo
- HorizontalRule
- InlineDrawing
- InlineImage
- Texto
- UnsupportedElement (número de página, etc.)
- Tabla
- ListItem
- FootnoteSection
- DocumentTab
- Tab
Cómo reemplazar texto
Apps Script se suele usar para reemplazar texto en Documentos de Google. Supongamos que tienes una hoja de cálculo llena de información del cliente y deseas generar documentos de Google personalizados para cada cliente. (Este tipo de operación suele llamarse combinación de correspondencia).
Hay muchas formas de reemplazar texto, pero la más sencilla es el método replaceText()
que se muestra en el siguiente ejemplo. replaceText
admite la mayoría de las funciones de expresiones regulares de JavaScript. La primera función que se muestra a continuación agrega varias líneas de texto de marcador de posición a un documento de Google. En el mundo real, es más probable que escribas los marcadores de posición en el documento por tu cuenta. La segunda función reemplaza los marcadores de posición por las propiedades definidas en el objeto client
.
Ten en cuenta que ambas funciones usan los métodos getActiveDocument()
y getActiveTab()
, que solo se aplican a las secuencias de comandos creadas dentro de un documento de Documentos de Google. En una secuencia de comandos independiente, usa DocumentApp.create()
, openById()
o openByUrl()
, combinados con Document.getTab()
.
Agrega algunos marcadores de posición
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
Reemplaza los marcadores de posición
function searchAndReplace() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); var client = { name: 'Joe Script-Guru', address: '100 Script Rd', city: 'Scriptville', state: 'GA', zip: 94043 }; body.replaceText('{name}', client.name); body.replaceText('{address}', client.address); body.replaceText('{city}', client.city); body.replaceText('{state}', client.state); body.replaceText('{zip}', client.zip); }
Menús e interfaces de usuario personalizados
Puedes personalizar Documentos de Google agregando menús, cuadros de diálogo y barras laterales. Sin embargo, ten en cuenta que una secuencia de comandos solo puede interactuar con la IU de la instancia actual de un documento abierto y solo si la secuencia de comandos está vinculada al documento.
Consulta cómo agregar menús personalizados y diálogos a tus documentos de Google. Para obtener más información sobre cómo crear interfaces personalizadas para un diálogo o una barra lateral, consulta la guía del servicio HTML. Si planeas publicar tu interfaz personalizada como parte de un complemento, sigue la guía de estilo para garantizar la coherencia con el estilo y el diseño del editor de Documentos de Google.
Complementos para Documentos de Google
Los complementos se ejecutan dentro de Documentos de Google y se pueden instalar desde la tienda de complementos de Documentos de Google. Si desarrollaste una secuencia de comandos para Documentos de Google y quieres compartirla con el mundo, Apps Script te permite publicarla como complemento para que otros usuarios puedan instalarla desde la tienda de complementos.
Para ver cómo crear un complemento para Documentos de Google, consulta la guía de inicio rápido para crear complementos de Documentos.
Activadores
Las secuencias de comandos vinculadas a un documento de Google pueden usar un activador simple para responder al evento onOpen
del documento, que se produce cada vez que un usuario con acceso de edición al documento lo abre en Documentos de Google.
Para configurar el activador, solo escribe una función llamada onOpen()
. Para ver un ejemplo de este activador, consulta Menús personalizados en Google Workspace.
Si bien el activador simple es útil para agregar menús, no puede usar ningún servicio de Apps Script que requiera autorización.