扩展 Google 文档

利用 Google Apps 脚本,您可以通过编程方式创建和修改 Google 文档、 还可以通过新的菜单、对话框和工具自定义 边栏。

基础知识

Apps 脚本可以通过以下两种方式与 Google 文档互动:任何脚本都可以 创建或修改文档,前提是脚本用户拥有 而脚本也可以 绑定到文档,这相当于 更改用户界面或在 文档已打开。要在 Google 文档中创建与容器绑定的脚本,请按以下步骤操作: 依次点击扩展程序 > Apps 脚本

无论是哪种情况,都可通过 Apps 脚本的 文档服务,如以下示例所示 演示。

function createDoc() {
  var doc = DocumentApp.create('Sample Document');
  var body = doc.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);
}

上述脚本会在用户的 Google 云端硬盘中创建一个新文档,然后将 包含与文档名称相同的文本的段落, 作为标题,并根据 二维数组。脚本可以轻松地对 来替换现有文档 DocumentApp.create()DocumentApp.openById()共享 或 openByUrl()。 对于在文档(容器绑定)内创建的脚本,请使用 DocumentApp.getActiveDocument()

文档的结构

从 Apps 脚本的角度来看,Google 文档的结构类似于 HTML 文档 - 也就是说,Google 文档由许多元素(如 ParagraphTable),它们通常包含其他 元素。修改 Google 文档的大多数脚本都是以调用 getBody(),因为 Body是主元素 包含除 HeaderSection, FooterSection 和任何 Footnotes

不过,对于哪些类型的元素可以包含其他类型,我们制定了一些规则。 此外,Apps 脚本中的文档服务只能插入 元素组成。下面的树状结构显示了 元素类型。

可以插入以粗体显示的元素;只有 进行适当处理

替换文本

Apps 脚本通常用于替换 Google 文档中的文本。假设您有一个 而您希望生成 每个客户端的 Google 文档。(这种类型的操作通常称为 merge.)

替换文字的方法有很多,但最简单的就是 replaceText() 方法,如下例所示。replaceText支持大部分 JavaScript 的正则表达式功能下面的第一个函数 向 Google 文档添加多行占位符文本;在现实世界中,您 则更有可能自行将占位符输入到文档中。通过 第二个函数会将占位符替换为 client 对象。

请注意,这两个函数都使用 getActiveDocument() 方法,该方法仅适用于在 Google 文档中创建的脚本;以 独立的脚本,使用 DocumentApp.create(), openById(), 或openByUrl()

添加一些占位符

function createPlaceholders() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.appendParagraph('{name}');
  body.appendParagraph('{address}');
  body.appendParagraph('{city} {state} {zip}');
}

替换占位符

function searchAndReplace() {
  var body = DocumentApp.getActiveDocument()
      .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);
}

自定义菜单和界面

您可以通过添加菜单、对话框和 边栏。但请注意,脚本只能与界面交互 打开文档的当前实例,且仅当脚本 绑定到文档。

了解如何添加自定义菜单对话框。 要详细了解如何为对话框或边栏创建自定义界面,请参阅 HTML 服务指南。 如果您打算发布自定义界面 插件,请遵循 风格指南,以确保与 Google 文档编辑器的样式和布局。

Google 文档插件

插件在 Google 文档中运行,但可以安装 。如果您已经为 Google 文档开发了脚本 并且希望与全世界的用户分享 而使用 Apps 脚本 将您的脚本发布为 以便其他用户通过插件商店进行安装。

要了解如何创建适用于 Google 文档的插件,请参阅 快速入门:构建文档插件

触发器

绑定到 Google 文档可以使用简单的触发器做出回答 附加到文档的 onOpen 事件 每当拥有文档编辑权限的用户在 Google 文档中打开该文档时就会发生这种情况。

如需设置触发器,只需编写一个名为 onOpen() 的函数即可。示例 请参阅 Google Workspace 中的自定义菜单。 虽然简单触发器对于添加菜单很有用,但它无法使用任何应用 需要授权的脚本服务。