Apps Script de Google proporciona más de 30 servicios integrados para interactuar con los datos del usuario, otros sistemas de Google y sistemas externos. Estos servicios se proporcionan como objetos globales similares al objeto Math
estándar de JavaScript. Por ejemplo, al igual que Math
ofrece métodos como random()
y constantes como PI
, el servicio de hoja de cálculo de Apps Script ofrece métodos como openById(id)
, clases (objetos secundarios) como Range
y enums como DataValidationCriteria
.
La documentación de referencia de los servicios que controlan productos se recopila en la sección “ Servicios” del encabezado “Referencia” en la barra lateral de este sitio. Los servicios de utilidad (para tareas como crear interfaces de usuario, analizar XML o escribir datos de registro) se recopilan en la sección "Servicios de secuencia de comandos".
Funciones de JavaScript modernas
Apps Script admite dos entornos de ejecución de JavaScript: el moderno V8 y uno más antiguo con tecnología del intérprete de JavaScript Rhino de Mozilla.
El entorno de ejecución de V8 admite la sintaxis y las funciones modernas de ECMAScript. El entorno de ejecución de Rhino se basa en el estándar más antiguo de JavaScript 1.6, además de algunas funciones de 1.7 y 1.8. Puedes elegir libremente qué entorno de ejecución usar con tu secuencia de comandos, pero se recomienda usar el entorno de ejecución de V8.
Cada entorno de ejecución admite clases y objetos de JavaScript que están disponibles para tu secuencia de comandos, además de los servicios avanzados de Google y los integrados. Tus secuencias de comandos pueden usar objetos comunes, como Array
, Date
, RegExp
, etcétera, así como los objetos globales Math
y Object
.
Cómo usar la función autocompletar
El editor de secuencia de comandos proporciona una función de "ayuda de contenido", más comúnmente llamada "autocompletado", que muestra los objetos globales, así como los métodos y las enums que son válidos en el contexto actual de la secuencia de comandos. Las sugerencias de autocompletado aparecen automáticamente cada vez que escribes un punto después de un objeto global, una enumeración o una llamada a método que muestra una clase de Apps Script. Por ejemplo:
- Si escribes el nombre completo de un objeto global o seleccionas uno del autocompletado y, luego, escribes
.
(un punto), verás todos los métodos y enums de esa clase. - Si escribes algunos caracteres, verás todas las sugerencias válidas que comienzan con esos caracteres.
Información sobre los objetos globales
Cada servicio proporciona al menos un objeto global (de nivel superior). Por ejemplo, se accede al servicio de Gmail solo desde el objeto GmailApp
. Algunos servicios proporcionan varios objetos globales. Por ejemplo, el servicio base incluye cuatro objetos globales: Browser
, Logger
, MimeType
y Session
.
Llamadas a métodos
Los objetos globales de casi todos los servicios avanzados o integrados incluyen métodos que muestran datos o una clase de Apps Script. Las secuencias de comandos realizan llamadas a métodos en este formato:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
Por ejemplo, una secuencia de comandos puede enviar un correo electrónico llamando al método sendEmail(recipient, subject, body)
del servicio de Gmail de la siguiente manera:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
Si un método muestra otra clase de Apps Script, puedes encadenar llamadas a métodos en una línea. (Los tipos de resultados se muestran en el autocompletado y en la documentación de referencia de un método). Por ejemplo, el método DocumentApp.create()
muestra un Document
. Por lo tanto, las siguientes dos secciones de código son equivalentes:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()
.appendParagraph('New paragraph.');
Cómo acceder a clases secundarias
Cada servicio incluye una o más clases secundarias a las que no se puede acceder desde el nivel superior como lo puede hacer un objeto global. No puedes usar la palabra clave new
para
construir estas clases, como puedes hacerlo con las clases estándar de JavaScript, como
Date
.
Solo puedes acceder a una clase secundaria llamando a un método que la devuelva. Si no tienes la seguridad de cómo acceder a una clase determinada, visita la página raíz de la documentación de referencia del servicio y busca un método que muestre la clase que deseas.
Cómo lidiar con las interfaces
Algunos servicios incluyen clases especiales que se etiquetan como “interfaces” en la documentación de referencia. Estas son clases genéricas que se usan como tipos de datos que se muestran para métodos que no pueden determinar el tipo preciso con anticipación. Por ejemplo, el método Document service Body.getChild(childIndex)
muestra un objeto Element
genérico.
Element
es una interfaz que representa a otra clase, posiblemente una Paragraph
o Table
. Los objetos de interfaz rara vez son útiles por sí solos. En su lugar, por lo general, deseas llamar a un método como Element.asParagraph()
para transmitir el objeto a una clase precisa.
Cómo trabajar con enums
La mayoría de los servicios incluyen algunas enums (tipos enumerados) de valores nombrados. Por ejemplo, el servicio de Drive usa las enums Access
y Permission
para determinar qué usuarios tienen acceso a un archivo o una carpeta. En casi todos los casos, accedes a estas enums desde el objeto global. Por ejemplo, una llamada al método Folder.setSharing(accessType, permissionType)
se ve de la siguiente manera:
// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);