使用 Google Apps 脚本实操:只需 4 行代码即可访问 Google 表格、Google 地图和 Gmail!

1. Google Apps 脚本简介

在此 Codelab 中,我们将向您介绍编写代码调用 Google 开发者技术的最简方法之一。所有这些都是通过应用主流 Web 开发语言 JavaScript 完成的。借助 Google Apps 脚本,您可编写代码来提取 Google 表格某一单元格中的街道地址,根据该地址生成一份 Google 地图,然后通过 Gmail 将该地图作为附件发送。最难得的是,只有四行代码。

学习内容

  • 如何将 Google Apps 脚本与各种 Google 服务(例如 Google 表格、Google 地图和 Gmail)搭配使用。
  • 使用 Apps 脚本的浏览器内编辑器开发代码。

所需条件

  • 可访问互联网的网络浏览器
  • Google 账号(Google Workspace 账号可能需要获得管理员批准)
  • 基本熟悉 Google 表格
  • 能够读取 Google 表格 A1 表示法

2. 调查问卷

您将如何使用本 Codelab/教程?

仅阅读教程内容 阅读并完成练习

您如何评价自己在 Google Workspace 开发者工具和 API 方面的经验水平?

新手水平 中等水平 熟练水平

3. 概览

现在,您已经了解了本 Codelab 的内容,接下来您将具体做些什么?

  1. 初步了解基于 JavaScript 的 Apps 脚本。
  2. 创建 Google 表格电子表格。
  3. 在电子表格的左上角单元格 (A1) 中输入街道地址。
  4. 了解如何为任意文档打开 Apps 脚本编辑器。
  5. 修改、保存并运行 Apps 脚本代码。
  6. 使用 Gmail 查看结果。

让我们开始吧。

什么是 Google Apps 脚本?

Google Apps 脚本是一个开发平台,可助您轻松高效地创建与 Google Workspace 集成的脚本和小应用。借助 Apps 脚本,您可以:

  • 使用 JavaScript 编写代码,并访问 Gmail、Google 日历、Google 云端硬盘等 Google Workspace 应用的内置库。
  • 无需安装任何内容 - 我们直接通过浏览器为您提供代码编辑器,并且您的脚本可在 Google 的服务器上运行。
  • 无需担心安全性和数据访问权限等复杂主题,因为该平台会为您处理这些问题。

Apps 脚本可用于创建各种应用,从聊天机器人到 Web 应用,应有尽有。最常见的用途之一是扩展 Google 表格电子表格的功能。在此 Codelab 的其余部分,您将学习如何使用 Apps 脚本从电子表格中提取数据,并将其与其他 Google 服务相关联。

4. 创建 Google 表格并输入街道地址

按照以下说明,在新的 Google 表格中输入有效的街道地址:

  1. 使用此便捷链接 (sheets.google.com/create) 创建 Google 表格。或者,前往 Google 云端硬盘 (drive.google.com),然后依次点击新建 > Google 表格 > 空白电子表格

413a93e5b2f6b3d4.png

  1. 在空白电子表格中,前往左上角的第一个单元格 (A1)。它位于 A 列第 1 行。如果您需要重新熟悉一下此概念,可以参阅 A1 表示法说明
  2. 在相应单元格中输入有效的街道地址。选择全球范围内具有确切位置的地址,该地址可以是街道地址、邮政编码,也可以是城市和州/省/自治区/直辖市的组合。以下是纽约市地址的示例:

7077e446455639df.png

这就是您在工作表中需要完成的所有操作。让我们打开编辑器并编写一些代码。

5. 修改 Apps 脚本代码

现在您已经创建了一个新的 Google 表格,接下来可以编辑其绑定脚本了。请按照以下说明操作:

打开脚本编辑器

在菜单栏中,依次选择扩展程序 > Apps 脚本,以打开 Apps 脚本的浏览器代码编辑器。

在新的浏览器标签页中,代码编辑器会显示工作表的默认容器绑定脚本。系统会自动创建一个名为 myFunction() 的默认函数,并将光标置于该函数内,以便您开始操作。

通过电子邮件发送地址的 Google 地图

您获得的“模板”代码为空,因此我们将其替换为我们的应用。

  1. 在脚本编辑器中,将默认的 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]});
}
  1. 将占位电子邮件地址 ('YOUR_EMAIL_ADDR') 替换为有效地址。例如,friend@example.com
  2. 要保存脚本,请点击“保存”保存
  3. 如需重命名 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 发送电子邮件的权限。第一个授权对话框如下所示:

ba6e1a798e404e0d.png

点击查看权限以继续。

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

9bed7ef1ccbd7569.png

授予权限后,脚本会运行直至完成。

检查您发送邮件时使用的电子邮件账号,您应该会看到一封主题为“Map”的电子邮件,邮件正文如下所示:

51f61fc51a13d28f.png

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

739bb45b75e3f7c7.png

您仅用了四行代码,就以有意义的方式访问了 3 款不同的 Google 产品。

7. 其他资源

本 Codelab 中使用的代码也可在 GitHub 代码库中找到,网址为 github.com/googleworkspace/apps-script-intro-codelab。下面提供了更多资源,可帮助您更深入地了解本 Codelab 涵盖的内容,并探索通过程序化方式访问 Google 开发者工具的其他方法。

文档

视频

资讯和最新动态

其他 Codelab

入门级

中级

参考应用