1. Google Apps 脚本简介
在此 Codelab 中,我们将向您介绍一种最简单的方法来编写用于访问 Google 开发者技术的代码。这一切都是通过应用 JavaScript(一种主流 Web 开发语言)完成的。您可以使用 Google Apps 脚本编写代码,从 Google 表格的单元格中提取街道地址,根据地址生成 Google 地图,然后使用 Gmail 以附件形式发送地图。最难得的是,只有四行代码。
学习内容
- 如何在各种 Google 服务(例如 Google 表格、Google 地图和 Gmail)中使用 Google Apps 脚本。
- 使用适用于 Apps 脚本的浏览器内编辑器开发代码。
所需条件
2. 调查问卷
您将如何使用此 Codelab/教程?
您如何评价 Google Workspace 开发者工具和API?
<ph type="x-smartling-placeholder">3. 概览
现在,您已经了解了此 Codelab 的内容,接下来您要做些什么呢?
- 对基于 JavaScript 的 Apps 脚本有所了解。
- 创建 Google 表格电子表格。
- 在电子表格左上角的单元格 (A1) 中输入街道地址。
- 了解如何针对任何文档打开 Apps 脚本编辑器。
- 修改 Apps 脚本代码,保存并运行代码。
- 使用 Gmail 查看结果。
让我们开始吧。
什么是 Google Apps 脚本?
Google Apps 脚本是一个开发平台,可让您快速轻松地创建与 Google Workspace 集成的脚本和小型应用。借助 Apps 脚本,您可以:
- 使用 JavaScript 编写代码,以及访问 Gmail、日历、云端硬盘等 Google Workspace 应用的内置库。
- 无需安装任何内容 - 我们在您的浏览器中提供了代码编辑器,您的脚本可在 Google 的服务器上运行。
- 您不必担心安全和数据访问权限等复杂的主题,因为平台会为您处理。
Apps 脚本可用于创建各种应用,从聊天机器人到 Web 应用,不一而足。最常见的用途之一是扩展 Google 表格电子表格的功能。在此 Codelab 的其余部分,您将学习如何使用 Apps 脚本从电子表格获取数据并将其连接到其他 Google 服务。
4. 创建 Google 表格和输入街道地址
在新的 Google 表格中,按照以下说明输入有效的街道地址:
- 使用此便捷链接 (sheets.google.com/create) 创建 Google 表格。或者,转到您的 Google 云端硬盘 (drive.google.com),然后点击新建 >Google 表格 >空白电子表格
- 在空白的电子表格中,转到左上角的第一个单元格 (A1)。它位于 A 列第 1 行。如果您需要重新熟悉一下,可以参阅 A1 表示法说明。
- 在单元格中输入有效的街道地址。使用街道地址、邮政编码或城市和州/省/自治区/直辖市的组合,选择世界上具有确切位置的地址。以下是纽约市的地址示例:
您只需在工作表中进行操作即可。让我们打开编辑器并编写一些代码。
5. 修改 Apps 脚本代码
现在您拥有了一个新的 Google 表格,可以编辑其绑定的脚本了。请按照以下说明操作:
打开脚本编辑器
在菜单栏中,依次选择扩展程序 >Apps 脚本,打开 Apps 脚本的浏览器代码编辑器。
在新的浏览器标签页中,代码编辑器会显示工作表的默认与容器绑定的脚本。系统会自动创建名为 myFunction()
的默认函数,并将光标放置在该函数内,以便您开始使用。
通过电子邮件发送该地址的 Google 地图
“模板”您提供的代码是空的,所以让我们将其替换为我们的应用。
- 在脚本编辑器中,将默认的
myFunction()
代码块替换为以下代码:
/** @OnlyCurrentDoc */
function sendMap() {
var sheet = SpreadsheetApp.getActiveSheet();
var address = sheet.getRange('A1').getValue();
var map = Maps.newStaticMap().addMarker(address);
GmailApp.sendEmail('YOUR_EMAIL_ADDR', 'Map', 'See below.', {attachments:[map]});
}
- 将占位符电子邮件地址 (
'YOUR_EMAIL_ADDR'
) 替换为有效的地址。例如,friend@example.com。 - 要保存脚本,请点击“保存”。
- 如需重命名 Apps 脚本项目,请点击未命名项目,输入项目标题,然后点击重命名。
代码审核
我们来看一下构成整个应用的 sendMap()
函数的 4 行代码。有趣的是,该代码引用了 3 种不同的 Google 产品。
第一行是注释,它可影响授权:
/** @OnlyCurrentDoc */
大多数脚本会先要求用户提供一些权限,然后才能运行。这些权限控制着用户允许脚本执行的操作。第一行是包含可选注释的注释,用于指示 Apps 脚本限制对当前电子表格(而不是用户的所有电子表格)的访问。如果您只处理一个文件,最好始终添加此注释。
该代码对 sendMap()
使用了常规的 JavaScript 函数声明:
function sendMap() {
下一行代码会调用可通过 SpreadsheetApp
对象可从 Apps 脚本访问的电子表格服务。返回的工作表被分配给同名变量。getActiveSheet()
方法可获取对当前工作表对象的引用,并将其存储在变量 sheet
中。
var sheet = SpreadsheetApp.getActiveSheet();
借助 sheet
对象,我们会使用 getRange()
引用(采用 A1 表示法表示的单个单元格)的单元格范围。“range”(范围)是一组单元格,包括一个单元格,例如单元格 A1
(我们在其中输入地址的单元格)。为了提取范围内的内容,getValue()
方法会返回范围内左上角单元格的值,并将该值赋值给变量 address
。您还可以尝试添加更多地址,并从其他单元格中读取数据。
var address = sheet.getRange('A1').getValue();
第三行代码使用 Maps
对象连接到 Google 地图服务。newStaticMap()
用于创建静态地图对象,addMarker()
方法用于添加“图钉”使用工作表中的地址映射到地图。
var map = Maps.newStaticMap().addMarker(address);
最后,Gmail 服务通过 MailApp
对象调用 sendEmail()
方法,发送同时包含文本“如下所示”的电子邮件。并将地图图像作为附件
GmailApp.sendEmail('friend@example.com', 'Map', 'See below.', {attachments:[map]});
}
6. 运行 Google 表格、Google 地图和 Gmail 应用
命名并保存函数后,就可以运行该函数了。在编辑器的顶部,确保从函数列表中选择 sendMap()
,然后点击 Run。
Apps 脚本功能是开发者青睐的一大优势,即您无需编写授权代码来授予程序访问用户数据的权限。尽管 Apps 脚本可以做到这一点,但您应用的用户仍然需要授权该脚本访问他们的电子表格并通过 Gmail 发送电子邮件。第一个授权对话框如下所示:
点击查看权限以继续。
接下来,您会看到一个 OAuth2 对话框窗口,请求您授予访问工作表和代表您发送电子邮件的权限:
在您授予权限后,脚本会运行完成。
检查您发送邮件的目标电子邮件,应该会看到一封包含“地图”的电子邮件作为主题,并提供类似如下的消息:
当您打开电子邮件中的附件时,应该会看到一个 Google 地图,其中您在工作表中输入的地址上有一个图钉:
仅用了 4 行代码,您就以有意义的方式访问了 3 款不同的 Google 产品。
7. 其他资源
此 Codelab 中介绍的代码也在其 GitHub 代码库(网址为 github.com/googleworkspace/apps-script-intro-codelab)中提供。下面提供了更多资源,可帮助您更深入地了解此 Codelab 中介绍的内容,并探索以编程方式访问 Google 开发者工具的其他方式。
文档
视频
新闻和最新动态
- Google Workspace 开发者博客
- Twitter:Google Workspace Developers (@workspacedevs)
其他 Codelab
入门级
- [Google 表格] Google 表格的 Apps 脚本基础知识
- [REST API] 使用 Google Workspace 和用于访问文件和Google 云端硬盘中的文件夹
中级
- [Apps 脚本] 适用于 Gmail 的 Google Workspace 插件
- [Apps 脚本] 适用于 Hangouts Chat 的自定义聊天机器人
- [REST API] 将 Google 表格用作应用的报告工具
- [REST API] 使用 BigQuery API 生成 Google 幻灯片演示文稿