内置 Google 服务

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Google Apps 脚本提供了 30 多项内置服务,用于与用户数据、其他 Google 系统和外部系统进行交互。这些服务作为全局对象提供,类似于 JavaScript 的标准 Math 对象。例如,正如 Math 提供了 random() 等方法以及 PI 等常量一样,Apps 脚本的电子表格服务提供了 openById(id) 等类、Range 等类(子对象)以及 DataValidationCriteria 等枚举。

控制产品Google Workspace 产品的服务参考文档位于“Google Workspace Service”部分,位于本网站边栏中“参考”标题下。实用程序服务(用于创建界面、解析 XML 或写入日志数据等)收集在“脚本服务”部分。

现代 JavaScript 功能

Apps 脚本支持两种 JavaScript 运行时:新型 V8 运行时和旧版(由 Mozilla 的 Rhino JavaScript 解释器提供支持)。

V8 运行时支持现代 ECMAScript 语法和功能。Rhino 运行时基于旧版 JavaScript 1.6 标准,再加上 1.71.8 的部分功能。您可以自由选择将哪个运行时用于您的脚本,但我们强烈建议您使用 V8 运行时。

除了内置和高级 Google 服务之外,每个运行时还支持可供脚本使用的 JavaScript 类和对象。您的脚本可以使用 ArrayDateRegExp 等常见对象,以及 MathObject 全局对象。

使用自动补全功能

脚本编辑器提供“内容辅助”功能(通常称为“自动补全”),该功能会显示全局对象以及在该脚本的当前环境中有效的方法和枚举。只要您在返回 Apps 脚本类的全局对象、枚举或方法调用后输入英文句点,系统就会自动显示自动补全建议。例如:

  • 如果输入全局对象的全名或从自动补全中选择一个对象,然后输入 .(英文句点),您将看到该类的所有方法和枚举。
  • 如果您输入几个字符,则会看到所有以这些字符开头的有效建议。

了解全局对象

每个服务至少提供一个全局(顶级)对象;例如,Gmail 服务只能通过 GmailApp 对象进行访问。有些服务提供多个全局对象;例如,基本服务包含四个全局对象:BrowserLoggerMimeTypeSession

调用方法

几乎所有内置或高级服务的全局对象都包括返回数据或 Apps 脚本类的方法。脚本采用以下格式进行方法调用:

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

例如,脚本可以通过调用 Gmail 服务的 sendEmail(recipient, subject, body) 方法来发送电子邮件,如下所示:

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

如果某个方法返回另一个 Apps 脚本类,您可以在一行代码中链接方法调用。(返回类型会显示在自动补全和方法的参考文档中。)例如,DocumentApp.create() 方法会返回 Document;因此,以下两个代码段是等效的:

var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');

// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');

访问子类

每个服务都包含一个或多个无法作为全局对象从顶级访问的子类。与标准 JavaScript 类(如 Date)不同,您不能使用 new 关键字来构建这些类;您只能通过调用返回子类的方法来对其进行访问。如果您不确定如何访问特定类,请访问服务的参考文档的根页面,并查找返回所需类的方法。

处理接口

少数服务包括在参考文档中被标记为“接口”的特殊类。这些是通用类,用作无法提前确定确切类型的方法的返回类型;例如,文档服务方法 Body.getChild(childIndex) 会返回通用 Element 对象。Element 是一个接口,表示其他类(可能是 ParagraphTable)。接口对象本身很少用,而是通常需要调用 Element.asParagraph() 等方法将对象转换回精确类。

使用枚举

大多数服务都包含几个已命名值的枚举(枚举类型)。例如,云端硬盘服务使用枚举 AccessPermission 来确定哪些用户有权访问文件或文件夹。几乎在所有情况下,您都是通过全局对象访问这些枚举。例如,对 Folder.setSharing(accessType, permissionType) 方法的调用如下所示:

// 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);