利用 Google Apps 脚本,您可以通过编程方式创建和修改 Google 文档,还可以使用新的菜单、对话框和边栏自定义界面。
基础知识
Apps 脚本可通过两种更广泛的方式与 Google 文档交互:任何脚本都可以创建或修改文档(如果脚本的用户拥有该文档的适当权限),还可以将脚本绑定到文档,从而让脚本在打开文档时能够更改界面或做出响应。如需在 Google 文档中创建容器绑定脚本,请点击扩展程序 > Apps 脚本。
无论是哪种情况,都请通过 Apps 脚本的文档服务与 Google 文档互动比较简单,如以下示例所示。
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 文档由一些元素(例如 Paragraph
或 Table
)组成,这些元素通常包含其他元素。大多数修改 Google 文档的脚本都从调用 getBody()
开始,因为 Body
是除 HeaderSection
、FooterSection
和任何其他Footnotes
以外的所有其他元素。
不过,对于哪些元素类型可以包含其他类型的元素,您需要遵守相关规则。此外,Apps 脚本中的文档服务只能插入特定类型的元素。下面的树显示了特定类型的元素可包含哪些元素。
以粗体显示的元素可以插入;非粗体元素则只能在原地使用。
正在替换文本
Apps 脚本经常用于替换 Google 文档中的文本。假设您有一个包含客户端信息的电子表格,并且希望为每个客户端生成个性化的 Google 文档。(此类操作通常称为“邮件合并”。)
文本替换方式有很多,最简单的方法是下例中所示的 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); }
自定义菜单和界面
您可以通过添加菜单、对话框和边栏来自定义 Google 文档。但请记住,脚本只能与已打开文档的当前实例的界面进行交互,并且仅当该脚本绑定到该文档时才能交互。
了解如何向 Google 文档添加自定义菜单和对话框。如需详细了解如何为对话框或边栏创建自定义接口,请参阅 HTML 服务指南。如果您打算将自定义界面作为插件的一部分发布,请遵循样式指南,以与 Google 文档编辑器的样式和布局保持一致。
Google 文档的插件
插件在 Google 文档中运行,并可通过 Google 文档插件商店安装。如果您针对 Google 文档开发了一个脚本,并且希望与全世界共享该脚本,则 Apps 脚本允许您将插件发布为插件,以便其他用户可以通过插件商店安装它。
如需了解如何为 Google 文档创建插件,请参阅关于构建文档插件的快速入门。
触发器
绑定到 Google 文档的脚本可以使用简单触发器来响应文档的 onOpen
事件,每当拥有文档编辑权限的用户在 Google 文档中打开该文档时,就会发生这种情况。
只需编写一个名为 onOpen()
的函数,即可设置触发器。如需查看此触发器的示例,请参阅 Google Workspace 中的自定义菜单。虽然简单触发器对于添加菜单非常有用,但它无法使用任何需要授权的 Apps 脚本服务。