扩展 Google 表格

通过 Google Apps 脚本,您可以使用 Google 表格执行一些很酷的新操作。您可以 使用 Apps 脚本添加自定义菜单对话框和边栏导出到 Google 表格。它还 您可以编写自定义函数, 还能将 Google 表格与其他 Google 服务,例如日历、云端硬盘和 Gmail。

专为 Google 表格设计的大多数脚本均可操控数组 与电子表格中的单元格、行和列互动。如果您没有 熟悉 JavaScript 中的数组,Codecademy 提供 非常好用的数组训练模块。 (请注意,本课程并非由 Google 开发,与 Google 无关。)

有关在 Google 表格中使用 Apps 脚本的快速介绍,请参阅 5 分钟的快速入门指南 宏、菜单和自定义函数

开始使用

Apps 脚本包含一些特殊的 API,可让您以编程方式创建、读取和 编辑 Google 表格。Apps 脚本可与 Google 表格的交互方式有以下两种: 方式:只要脚本的用户在某个文件中 拥有适当的电子表格权限,而脚本也可以 绑定到电子表格 赋予脚本特殊能力来更改用户界面,或在发生以下情况时响应: 电子表格便会打开如需创建绑定脚本,请选择 扩展程序 > Apps 脚本 Google 表格。

电子表格服务会将 Google 以网格形式显示的表格,使用二维数组进行操作。检索数据 您必须有权访问数据所在的电子表格 获取包含该数据的电子表格中的范围,然后获取 单元格的值。Apps 脚本通过读取 结构化数据,并为这些数据创建 JavaScript 对象。

读取数据

假设您有一个存储产品名称和产品编号的列表, 如下图所示。

以下示例展示了如何检索和记录商品名称和商品 数字。

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

查看日志

如需查看已记录的数据,请点击脚本编辑器顶部的 执行日志

写入数据

为了将新产品名称和编号等数据存储到 请将以下代码添加到脚本的末尾。

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

以上代码会在电子表格的底部附加一个新行, 的值。如果运行此函数,您会看到 电子表格。

自定义菜单和界面

您可以通过添加自定义菜单、对话框和 边栏。要了解有关创建菜单的基础知识,请参阅 菜单指南。要了解如何自定义 对话框的内容,请参阅 HTML 服务指南

您也可以将脚本函数附加到 电子表格;当用户点击图片或 绘图。要了解详情,请参阅 Google 表格中的图片和绘图

如果您打算发布自定义界面 插件,请遵循 风格指南,以确保与 Google 表格编辑器的样式和布局。

正在连接到 Google 表单

借助 Apps 脚本,您可以通过 表单电子表格服务。此功能 可以基于电子表格中的数据自动创建 Google 表单。 借助 Apps 脚本,您还可以使用触发器,例如 onFormSubmit 在用户响应表单后执行特定操作。 要详细了解如何将 Google 表格与 Google 表单相关联,请尝试管理 Google 表单回复 5 分钟快速入门。

格式设置

Range 类包含如下方法: setBackground(color) 访问和修改某个单元格或一系列单元格的格式。以下 以下示例展示了如何设置范围的字体样式:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

数据验证

借助 Apps 脚本,您可以访问 Google 表格中的现有数据验证规则 或创建新规则例如,以下示例展示了如何设置 只允许单元格中 1 到 100 之间的数字的数据验证规则。

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

如需详细了解如何使用数据验证规则,请参阅 SpreadsheetApp.newDataValidation(), DataValidationBuilder, 和Range.setDataValidation(rule)

图表

通过 Apps 脚本,您可以在电子表格中嵌入表示 特定范围内。以下示例生成嵌入的条形图,假设 您的 A1:B15 单元格中有可绘制成图表的数据:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

要详细了解如何将图表嵌入您的电子表格, 请参阅EmbeddedChart和 例如 EmbeddedPieChartBuilder

Google 表格中的自定义函数

自定义函数类似于 内置电子表格函数(如 =SUM(A1:A5)),只不过您需要定义 函数行为与 Apps 脚本相关联。例如,您可以创建 函数 in2mm(),它会将值从英寸转换为毫米,然后使用 将 =in2mm(A1)=in2mm(10) 输入到电子表格中,从而在电子表格中 单元格。

如需详细了解自定义函数,请尝试 菜单和自定义函数 5 分钟的快速入门,也可以参阅 自定义函数指南

宏是通过 Google 表格界面执行 Apps 脚本代码的另一种方式。 与自定义功能不同,您可以使用键盘快捷键或通过 。如需了解详情,请参阅 Google 表格宏

Google 表格插件

插件是专门封装的 Apps 脚本 在 Google 表格内运行且可安装的项目 。如果您已经为 Google 表格开发了脚本 并且希望与全世界的用户分享 而使用 Apps 脚本 将您的脚本发布为 以便其他用户通过插件商店进行安装。

触发器

绑定到 Google 表格文件的脚本 可以使用函数等简单触发器 onOpen()onEdit(),以在对 访问电子表格时,系统会打开或编辑该电子表格。

与简单的触发器一样 可安装的触发器让 Google 表格 在发生特定事件时自动运行函数。可安装 与简单的触发器和支持服务相比,触发器更加灵活, 以下事件:打开、编辑、更改、表单提交和时间驱动(时钟)。