Built-in Google Services (original) (raw)

Google Apps Script provides more than 30 built-in services for interacting with user data, other Google systems, and external systems. These services are provided as global objects akin to JavaScript's standardMathobject. For example, just as Math offers methods like random() and constants like PI, Apps Script'sSpreadsheet service offers methods likeopenById(id), classes (child objects) likeRange, and enums likeDataValidationCriteria.

The reference documentation for services that control Google Workspace products are collected in the "Google Workspace Services" section under the "Reference" header in the sidebar of this site. Utility services (for things like creating user interfaces, parsing XML, or writing log data) are collected in the "Script Services" section.

Modern JavaScript features

Apps Script supports two JavaScript runtimes: the modernV8 runtime and an older one powered by Mozilla'sRhino JavaScript interpreter.

The V8 runtime supports modernECMAScript syntax and features. The Rhino runtime is based on the olderJavaScript 1.6standard, plus a few features from1.7 and1.8. You can freely choose which runtimeto use with your script, but the V8 runtime is strongly recommended.

Each runtime supports JavaScript classes and objects that are available to your script in addition to the built-in and advanced Google services. Your scripts can use common objects likeArray,Date,RegExp,and so forth, as well as theMath andObjectglobal objects.

Using autocomplete

The script editor provides a "content assist" feature, more commonly called "autocomplete," which reveals the global objects as well as methods and enums that are valid in the script's current context. Autocomplete suggestions appear automatically whenever you type a period after a global object, enum, or method call that returns an Apps Script class. For example:

Understanding global objects

Each service provides at least one global (top-level) object; for example, the Gmail service is accessed solely from the GmailApp object. Some services provide multiple global objects; for example, theBase service includes four global objects:Browser,Logger,MimeType, andSession.

Calling methods

The global objects of nearly all built-in oradvanced services include methods that return data or an Apps Script class. Scripts make method calls in this format:

GlobalObjectName.methodName(argument1, argument2, ..., argumentN);

For example, a script can send an email by calling thesendEmail(recipient, subject, body)method of the Gmail service like so:

GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');

If a method returns another Apps Script class, you can chain method calls on one line. (Return types are shown both in autocomplete and in a method's reference documentation.) For example, the methodDocumentApp.create()returns a Document; thus, the following two sections of code are equivalent:

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.');

Accessing child classes

Every service includes one or more child classes that cannot be accessed from the top level as a global object can. You cannot use the new keyword to construct these classes, as you can with standard JavaScript classes likeDate; you can only access a child class by calling a method that returns it. If you're not sure how to access a certain class, visit the root page for the service's reference documentation and look for a method that returns the class you want.

Dealing with interfaces

A handful of services include special classes that are labeled as "interfaces" in the reference documentation. These are generic classes used as return types for methods that cannot determine the precise type in advance; for example, the Document service methodBody.getChild(childIndex)returns a generic Element object.Element is an interface that represents some other class, possibly aParagraph orTable. Interface objects are rarely useful on their own; instead, you usually want to call a method likeElement.asParagraph()to cast the object back to a precise class.

Working with enums

Most services include a few enums (enumerated types) of named values. For example, the Drive service uses the enumsAccess andPermission to determine which users have access to a file or folder. In almost all cases, you access these enums from the global object. For example, a call to the methodFolder.setSharing(accessType, permissionType)looks like this:

// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);