Google 应用程序脚本从 Google 表格中的动态菜单中选择表格

问题描述 投票:0回答:1

我有一个包含大量工作表的电子表格,现在很难在底部的工作表列表中找到正确的工作表。 我想使用在此电子表格中生成带有工作表列表的菜单(1 个菜单项 = 1 个工作表)的脚本。这样,单击此菜单项即可将活动工作表更改为所选工作表

我尝试用谷歌搜索它,但我只找到了手动创建每个工作表链接的方法,并且我不明白如何在每个工作表上创建带有链接的动态数量的菜单项。我很高兴得到你的帮助。

google-sheets google-apps-script
1个回答
0
投票

动态更改的活动工作表

要实现在电子表格文件中动态设置活动工作表的能力,您可以实现一个应用程序脚本程序,该程序包含一个下拉菜单,其中包含电子表格中的所有工作表名称,并且在选择下拉列表中的项目时,相应的工作表将被激活。

下面的脚本使用应用程序脚本 onOpen 和 OnEdit 简单触发器。打开电子表格后,脚本将在名为“菜单”的工作表上创建一个下拉菜单,然后您可以选择一个选项(工作表名称),该工作表名称将被激活。

脚本

function onOpen(e) {
  var ss = e.source;
  let sheets = ss.getSheets();
  let sheetNames = sheets.map(sheet => sheet.getName());

  var cell = ss.getSheetByName("Menu").getRange("A1");
  var rule = SpreadsheetApp.newDataValidation().requireValueInList(sheetNames).build();
  cell.setDataValidation(rule);
}

function onEdit(e) {
  var ss = e.source;
  var cell = ss.getRange("A1");
  var selectedSheetName = cell.getValue();

  var sheetNames = ss.getSheets().map(sheet => sheet.getName());
  if (sheetNames.includes(selectedSheetName)) {
    ss.setActiveSheet(ss.getSheetByName(selectedSheetName));
  } else {
    Logger.log("Invalid sheet name selected: " + selectedSheetName);
  }
}

输出 Output

参考资料:apps脚本数据验证

© www.soinside.com 2019 - 2024. All rights reserved.