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

1. Google Apps 脚本简介

在此 Codelab 中,我们将向您介绍一种最简单的方法来编写用于访问 Google 开发者技术的代码。这一切都是通过应用 JavaScript(一种主流 Web 开发语言)完成的。您可以使用 Google Apps 脚本编写代码,从 Google 表格的单元格中提取街道地址,根据地址生成 Google 地图,然后使用 Gmail 以附件形式发送地图。最难得的是,只有四行代码。

学习内容

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

所需条件

  • 可连接到互联网的网络浏览器
  • Google 账号(Google Workspace 账号可能需要管理员批准)
  • 基本熟悉 Google 表格
  • 能够阅读 Google 表格 A1 表示法

2. 调查问卷

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

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

您如何评价 Google Workspace 开发者工具和API?

<ph type="x-smartling-placeholder"></ph> 新手 中级 熟练

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 Workspace 应用的内置库。
  • 无需安装任何内容 - 我们在您的浏览器中提供了代码编辑器,您的脚本可在 Google 的服务器上运行。
  • 您不必担心安全和数据访问权限等复杂的主题,因为平台会为您处理。

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

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

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

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

413a93e5b2f6b3d4

  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() {

下一行代码会调用可通过 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 发送电子邮件。第一个授权对话框如下所示:

ba6e1a798e404e0d.png

点击查看权限以继续。

接下来,您会看到一个 OAuth2 对话框窗口,请求您授予访问工作表和代表您发送电子邮件的权限:

9bed7ef1ccbd7569

在您授予权限后,脚本会运行完成。

检查您发送邮件的目标电子邮件,应该会看到一封包含“地图”的电子邮件作为主题,并提供类似如下的消息:

51f61fc51a13d28f

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

739bb45b75e3f7c7

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

7. 其他资源

此 Codelab 中介绍的代码也在其 GitHub 代码库(网址为 github.com/googleworkspace/apps-script-intro-codelab)中提供。下面提供了更多资源,可帮助您更深入地了解此 Codelab 中介绍的内容,并探索以编程方式访问 Google 开发者工具的其他方式。

文档

视频

新闻和最新动态

其他 Codelab

入门级

中级

参考应用