Google Apps 脚本可让您使用 Google 表格实现新颖有趣的操作。您可以使用 Apps 脚本向 Google 表格添加自定义菜单、对话框和边栏。它还可让您为 Google 表格编写自定义函数,并将 Google 表格与其他 Google 服务Google 服务等(如 Google 日历、云端硬盘和 Gmail)集成。
大多数专为 Google 表格设计的脚本处理数组,以便与电子表格中的单元格、行和列进行交互。如果您不熟悉 JavaScript 中的数组,Codecademy 提供了一个适用于数组的出色训练模块。(请注意,本课程并非由 Google 开发,也不与 Google 相关联。)
如需快速了解如何将 Apps 脚本与 Google 表格搭配使用,请参阅宏、菜单和自定义函数的 5 分钟快速入门指南。
开始使用
Apps 脚本包含特殊的 API,可让您以编程方式创建、读取和编辑 Google 表格。Apps 脚本可通过以下两种方式与 Google 表格互动:任何脚本都可以创建或修改电子表格(如果脚本用户拥有电子表格的相应权限),还可以将脚本绑定到电子表格,从而让脚本在打开电子表格时能够更改界面或响应。如需创建绑定脚本,请在 Google 表格中选择扩展程序 > Apps 脚本。
电子表格服务将 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']);
}
上面的代码会在电子表格底部附加一个新行,并以指定值。如果您运行此函数,则系统会在电子表格中添加一个新行。
自定义菜单和界面
您可以通过添加自定义菜单、对话框和边栏来自定义 Google 表格。如需了解创建菜单的基础知识,请参阅菜单指南。如需了解如何自定义对话框内容,请参阅 HTML 服务指南。
您还可以将脚本函数附加到电子表格中的图片或绘图;当用户点击图片或绘图时,该函数就会执行。如需了解详情,请参阅 Google 表格中的图片和绘图。
如果您打算将自定义界面作为插件的一部分发布,请遵循样式指南,使其与 Google 表格编辑器的样式和布局保持一致。
连接到 Google 表单
借助 Apps 脚本,您可以通过表单和电子表格服务将 Google 表单与 Google 表格相关联。此功能可以根据电子表格中的数据自动创建 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 表格宏。
Google 表格的插件
插件是指在 Google 表格中运行且经过特殊打包的 Apps 脚本项目,可以通过 Google 表格插件商店安装。如果您为 Google 表格开发了一个脚本,并希望与全世界分享该脚本,则您可以使用 Apps 脚本作为插件发布脚本,以便其他用户可以通过插件商店安装该脚本。
触发器
绑定至 Google 表格文件的脚本可以使用 onOpen()
和 onEdit()
等简单的触发器,在用户对电子表格拥有编辑权限的用户打开或编辑电子表格时自动做出响应。
与简单的触发器一样,可安装的触发器也会让 Google 表格在特定事件发生时自动运行函数。但是,与简单的触发器相比,可安装的触发器更加灵活,且支持以下事件:打开、修改、更改、表单提交和时间驱动(时钟)。