Google Workspace 中的自定义菜单

脚本可以通过添加界面元素来扩展某些 Google 产品,这些界面元素会在用户点击后执行 Apps 脚本函数。最常见的示例是从 Google 文档、表格、幻灯片或表单中的自定义菜单项运行脚本,不过脚本函数也可以通过点击 Google 表格中的图片和绘图来触发。

Google 文档、表格、幻灯片或表单中的自定义菜单

Apps 脚本可以在 Google 文档、表格、幻灯片或表单中添加新菜单,其中每个菜单项都与脚本中的函数相关联。(在 Google 表单中,只有打开表单进行修改的编辑者才能看到自定义菜单,打开表单进行回复的用户看不到自定义菜单。)

只有在绑定到文档、电子表格或表单的情况下,脚本才能创建菜单。如需在用户打开文件时显示菜单,请在 onOpen() 函数中编写菜单代码。

以下示例展示了如何添加菜单包含一个菜单项,后跟视觉分隔符,以及子菜单(其中包含另一个菜单项)。(请注意,在 Google 表格中,除非您使用的是新版本,否则必须改用 addMenu() 语法,且不可使用子菜单。)当用户选择任一菜单项时,相应的函数会打开 alert 对话框。如需详细了解您可以打开的对话框类型,请参阅对话框和边栏指南

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
     .alert('You clicked the second menu item!');
}

文档、电子表格、演示文稿或表单只能包含一个具有给定名称的菜单。如果同一脚本或其他脚本添加同名的菜单,则新菜单将替换旧菜单。文件处于打开状态时无法移除菜单,但您可以编写 onOpen() 函数,以便将来设置了特定属性时跳过该菜单。

Google 表格中的可点击图片和绘图

您还可以将 Apps 脚本函数分配给 Google 表格中的图片或绘图,但前提是该脚本已绑定到电子表格。以下示例展示了如何进行设置。

  1. 在 Google 表格中,依次选择菜单项扩展程序 > Apps 脚本,以创建绑定到电子表格的脚本。
  2. 删除脚本编辑器中的所有代码,然后粘贴以下代码。

      function showMessageBox() {
        Browser.msgBox('You clicked it!');
      }
    
  3. 返回 Google 表格,然后通过选择插入 > 图片插入 > 绘图插入图片或绘图。

  4. 插入图片或绘图后,点击它。右上角会显示一个小型下拉菜单选择器。点击该按钮,然后选择分配脚本

  5. 在显示的对话框中,输入要运行的 Apps 脚本函数的名称(不带括号),在本示例中为 showMessageBox。点击确定

  6. 再次点击图片或绘图。现在,该函数会执行。