Google 表格宏

借助 Google 表格,您可以记录用于重复您定义的特定系列界面互动的。录制宏后,您可以将其与键盘快捷键(采用 Ctrl+Alt+Shift+Number 格式)相关联。您可以使用该快捷键再次快速执行完全相同的宏步骤,通常是在其他位置或对其他数据执行。您还可以通过 Google 表格的扩展程序 > 菜单激活宏。

当您录制宏时,Google 表格会自动创建一个用于重现宏步骤的 Apps 脚本函数(宏函数)。宏函数会添加到与该工作表绑定的 Apps 脚本项目中名为 macros.gs 的文件中。如果已有项目文件与该名称的表格绑定,系统会将宏函数附加到该项目文件。Google 表格还会自动更新脚本项目manifest,记录分配给宏的名称和快捷键。

由于每个记录的宏都是完全在 Apps 脚本中定义的,因此您可以直接在 Apps 脚本编辑器中修改它们。您甚至可以在 Apps Script 中从头开始编写宏,也可以将已编写的函数转换为宏。

在 Apps 脚本中创建宏

您可以使用在 Apps Script 中编写的函数,并将其用作宏函数。最简单的方法是从 Google 表格编辑器中导入现有函数

或者,您也可以按照以下步骤在 Apps 脚本编辑器中创建宏:

  1. 在 Google 表格界面中,依次选择扩展 > Apps 脚本,在 Apps 脚本编辑器中打开绑定到该表格的脚本。
  2. 编写宏函数。宏函数不应接受任何参数,也不应返回任何值。
  3. 修改脚本清单以创建宏并将其关联到宏函数。为其分配一个唯一的键盘快捷键和名称。
  4. 保存脚本项目。然后,您就可以在工作表中使用该宏了。
  5. 测试工作表中的宏函数,以验证其能否按预期运行。

修改宏

您可以通过以下方式修改附加到工作表的宏:

  1. 在 Google 表格界面中,依次选择扩展程序 > > 管理宏
  2. 找到要修改的宏,然后依次选择 > 修改宏。这会打开 Apps 脚本编辑器,并定位到包含宏函数的项目文件。
  3. 修改宏函数以更改宏行为。
  4. 保存脚本项目。然后,您就可以在工作表中使用该宏了。
  5. 测试工作表中的宏函数,以验证其能否按预期运行。

将函数作为宏导入

如果已有脚本绑定到某个工作表,您可以将脚本中的函数import为新宏,然后为其分配键盘快捷键。为此,您可以修改清单文件,并向 sheets.macros[] 属性添加另一个元素。

或者,您也可以按照以下步骤从 Google 表格界面将函数导入为宏:

  1. 在 Google 表格界面中,依次选择扩展程序 > > 导入
  2. 从显示的列表中选择一个函数,然后点击添加函数
  3. 选择 关闭对话框。
  4. 依次选择扩展程序 > > 管理宏
  5. 在列表中找到您刚刚导入的函数。为宏分配唯一的键盘快捷键。您还可以在此处更改宏名称;名称默认为函数的名称。
  6. 点击更新以保存宏配置。

宏的清单结构

以下清单文件示例代码段展示了manifest中用于定义 Google 表格宏的部分。清单的 sheets 部分定义了分配给宏的名称和键盘快捷键,以及宏函数的名称。

  {
    ...
    "sheets": {
      "macros": [{
        "menuName": "QuickRowSum",
        "functionName": "calculateRowSum",
        "defaultShortcut": "Ctrl+Alt+Shift+1"
      }, {
        "menuName": "Headerfy",
        "functionName": "updateToHeaderStyle",
        "defaultShortcut": "Ctrl+Alt+Shift+2"
      }]
    }
  }

如需详细了解 Google 表格宏清单的构建方式,请参阅 Google 表格宏清单资源

最佳做法

在 Apps Script 中创建或管理宏时,建议您遵循以下准则。

  1. 宏越轻量,性能就越高。尽可能限制宏执行的操作数量。
  2. 宏最适合需要频繁重复且几乎无需配置的例行操作。对于其他操作,不妨改用自定义菜单项
  3. 请务必注意,宏键盘快捷键必须是唯一的,并且给定工作表中一次只能有 10 个带有快捷键的宏。任何其他宏只能通过扩展程序 > 菜单执行。
  4. 您可以先选择整个范围,然后激活用于更改单个单元格的宏,将该宏应用于一系列单元格。这意味着,通常不需要创建宏来重复在预定义的单元格范围内执行相同的操作。

您无法执行的操作

您可以使用宏执行的操作存在一些限制:

在绑定的脚本之外使用宏

宏是在绑定到特定 Google 表格的脚本中定义的。如果宏定义是在独立脚本网站应用中定义的,则会被忽略。

在 Google 表格插件中定义宏

您无法使用 Google 表格插件分发宏定义。Google 表格插件项目中的任何宏定义都会被该插件的用户忽略。

在脚本库中分发宏

您无法使用 Apps 脚本分发宏定义。

在 Google 表格之外使用宏

宏仅是 Google 表格中的一项功能,不适用于 Google 文档、表单或幻灯片。