1. Google Apps 脚本简介
在此 Codelab 中,我们将向您介绍编写代码调用 Google 开发者技术的最简方法之一。所有这些都是通过应用主流 Web 开发语言 JavaScript 完成的。借助 Google Apps 脚本,您可编写代码来提取 Google 表格某一单元格中的街道地址,根据该地址生成一份 Google 地图,然后通过 Gmail 将该地图作为附件发送。最难得的是,只有四行代码。
学习内容
- 如何将 Google Apps 脚本与各种 Google 服务(例如 Google 表格、Google 地图和 Gmail)搭配使用。
- 使用 Apps 脚本的浏览器内编辑器开发代码。
所需条件
2. 调查问卷
您将如何使用本 Codelab/教程?
您如何评价自己在 Google Workspace 开发者工具和 API 方面的经验水平?
3. 概览
现在,您已经了解了本 Codelab 的内容,接下来您将具体做些什么?
- 初步了解基于 JavaScript 的 Apps 脚本。
- 创建 Google 表格电子表格。
- 在电子表格的左上角单元格 (A1) 中输入街道地址。
- 了解如何为任意文档打开 Apps 脚本编辑器。
- 修改、保存并运行 Apps 脚本代码。
- 使用 Gmail 查看结果。
让我们开始吧。
什么是 Google Apps 脚本?
Google Apps 脚本是一个开发平台,可助您轻松高效地创建与 Google Workspace 集成的脚本和小应用。借助 Apps 脚本,您可以:
- 使用 JavaScript 编写代码,并访问 Gmail、Google 日历、Google 云端硬盘等 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() {
下一行代码调用了可通过 Apps 脚本中的 SpreadsheetApp 对象访问的电子表格服务。返回的工作表会赋值给同名变量。getActiveSheet() 方法获取对当前工作表对象的引用,并将其存储在变量 sheet 中。
var sheet = SpreadsheetApp.getActiveSheet();
借助 sheet 对象,我们可以通过 getRange() 以 A1 表示法引用单元格范围(单个单元格)。“范围”指一组单元格,也可仅包含一个单元格,例如单元格 A1(我们输入地址的那个单元格)。如需提取范围内的内容,getValue() 方法会返回该范围内左上角单元格的值,并将该值分配给变量 address。您还可以尝试添加更多地址并从不同单元格中读取数据。
var address = sheet.getRange('A1').getValue();
第三行代码使用 Maps 对象连接到 Google 地图服务。newStaticMap() 会创建一个静态地图对象,而 addMarker() 方法会使用工作表中的地址向地图添加“图钉”。
var map = Maps.newStaticMap().addMarker(address);
最后,Gmail 服务通过 MailApp 对象调用 sendEmail() 方法来发送电子邮件,其中包含文本“See below.”和附件形式的地图图片。
GmailApp.sendEmail('friend@example.com', 'Map', 'See below.', {attachments:[map]});
}
6. 运行 Google 表格、Google 地图和 Gmail 应用
命名并保存后,就可以运行该函数了。在编辑器顶部,确保从函数列表中选择了 sendMap(),然后点击运行。
开发者非常喜欢 Apps 脚本的一项功能,那就是您无需编写授权代码来授予程序访问用户数据的权限。虽然 Apps 脚本会管理此权限,但您的应用的用户仍需授予脚本访问其电子表格并通过 Gmail 发送电子邮件的权限。第一个授权对话框如下所示:

点击查看权限以继续。
接下来,您会看到 OAuth2 对话框,其中会请求访问您的工作表的权限以及代表您发送电子邮件的权限:

授予权限后,脚本会运行直至完成。
检查您发送邮件时使用的电子邮件账号,您应该会看到一封主题为“Map”的电子邮件,邮件正文如下所示:

当您打开电子邮件中的附件时,应该会看到一张 Google 地图,其中包含一个图钉,指向您在工作表中输入的地址:

您仅用了四行代码,就以有意义的方式访问了 3 款不同的 Google 产品。
7. 其他资源
本 Codelab 中使用的代码也可在 GitHub 代码库中找到,网址为 github.com/googleworkspace/apps-script-intro-codelab。下面提供了更多资源,可帮助您更深入地了解本 Codelab 涵盖的内容,并探索通过程序化方式访问 Google 开发者工具的其他方法。
文档
视频
资讯和最新动态
- Google Workspace 开发者博客
- Twitter:Google Workspace 开发者 (@workspacedevs)
其他 Codelab
入门级
- [Google 表格] 与 Google 表格配合使用的 Apps 脚本的基础知识
- [REST API] 使用 Google Workspace 和 Google API 访问 Google 云端硬盘中的文件和文件夹
中级
- [Apps 脚本] Gmail 的 Google Workspace 加购项
- [Apps 脚本] Hangouts Chat 的自定义聊天机器人
- [REST API] 将 Google 表格用作应用的报告工具
- [REST API] 使用 BigQuery API 生成 Google 幻灯片演示文稿