利用 Google Apps 脚本,您可以通过编程方式创建和修改 Google 文档、 还可以通过新的菜单、对话框和工具自定义 边栏。
基础知识
Apps 脚本可以通过以下两种方式与 Google 文档互动:任何脚本都可以 创建或修改文档,前提是脚本用户拥有 而脚本也可以 绑定到文档,这相当于 更改用户界面或在 文档已打开。要在 Google 文档中创建与容器绑定的脚本,请按以下步骤操作: 依次点击扩展程序 > Apps 脚本。
无论是哪种情况,都可通过 Apps 脚本 文档服务,如以下示例所示 演示。
function createDoc() { var doc = DocumentApp.create('Sample Document'); var documentTab = doc.getTab('t.0').asDocumentTab(); var body = documentTab.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 云端硬盘中创建一个新文档,然后
检索 ID 为 t.0
的标签页(默认的第一个标签页),插入一个段落
包含与文档名称相同的文本,并将该段落设置为
标题,并根据二维数组中的值附加表格。通过
也可以轻松地对现有文档进行这些更改
替换对 DocumentApp.create()
的调用
与DocumentApp.openById()
共享
或 openByUrl()
。
对于在文档(容器绑定)内创建的脚本,请使用
DocumentApp.getActiveDocument()
和 Document.getActiveTab()
。
文档的结构
从 Apps 脚本的角度来看,Google 文档文档是
类似于 HTML 文档,也就是说,一个文档由一个或多个
Tab
对象,每个对象均包含
元素(例如 Paragraph
或
Table
),这些字符通常包含
元素。修改 Google 文档文档的大多数脚本都是以调用
getTab()
和
asDocumentTab()
之后是getBody()
,
因为Body
是核心元素
包含制表符中除
HeaderSection
,
FooterSection
和任何
Footnotes
。
不过,对于哪些类型的元素可以包含其他类型,我们制定了一些规则。 此外,Apps 脚本中的文档服务只能将 转换为其他元素。下面的树状结构显示了 元素可以包含在特定类型的元素中。
可以插入以粗体显示的元素;只有 进行适当处理
替换文本
Apps 脚本通常用于替换 Google 文档中的文本。假设您有一个 而您希望生成 每个客户端的 Google 文档。(这种类型的操作通常称为 merge.)
替换文字的方法有很多,但最简单的就是
replaceText()
方法,如下例所示。replaceText
支持大部分
JavaScript 的正则表达式功能下面的第一个函数
向 Google 文档添加多行占位符文本;在现实世界中,您
则更有可能自行将占位符输入到文档中。通过
第二个函数会将占位符替换为
client
对象。
请注意,这两个函数都使用
getActiveDocument()
和
getActiveTab()
方法(仅适用于在 Google 文档内创建的脚本);
独立脚本中,使用
DocumentApp.create()
,
openById()
、
或 openByUrl()
,
与Document.getTab()
、
。
添加一些占位符
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
替换占位符
function searchAndReplace() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().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 中的自定义菜单。
虽然简单触发器对于添加菜单很有用,但它无法使用任何应用
需要授权的脚本服务。