如何使用Google Apps Script获取下拉列表选中值并重命名工作表
Google表格下拉选择自动修改工作表名称方案
现有代码存在两个核心问题:
- 调用
secondSheet.setName()时传入的是Range对象,而非单元格实际值,需要补充.getValue()方法获取内容 - 没有绑定编辑触发逻辑,无法实现选择下拉后自动执行改名操作
修正后完整代码
function renameSheet(e) { // 获取当前活跃表格 var ss = SpreadsheetApp.getActiveSpreadsheet(); // 获取对应工作表 var dataSheet = ss.getSheetByName("Data"); var secondSheet = ss.getSheets()[1]; // ========== 初始化下拉列表 ========== var partCell = secondSheet.getRange('A3'); var partLastRow = dataSheet.getLastRow(); var partRange = dataSheet.getRange('A2:A' + partLastRow); var partRule = SpreadsheetApp.newDataValidation().requireValueInRange(partRange).build(); partCell.setDataValidation(partRule); // ========== 编辑触发自动改名 ========== // 判断是否是第二张表的A3单元格被编辑,避免无效触发 if (e && e.source.getActiveSheet().getIndex() == 2 && e.range.getA1Notation() == 'A3') { // 读取A3的实际值,传入setName方法 var newName = secondSheet.getRange("A3").getValue(); // 加个非空判断,避免空值改名 if (newName.toString().trim() != '') { secondSheet.setName(newName); } } }
配置操作步骤
- 打开你的Google表格,点击顶部菜单栏「扩展程序」>「Apps 脚本」进入脚本编辑器
- 删除编辑器内原有代码,粘贴上述修正后的代码,点击保存
- 首次需要手动运行一次
renameSheet函数,按照页面提示完成脚本权限授权,完成后第二张表的A3单元格就会生成对应下拉选项 - 配置自动触发规则:
- 点击脚本编辑器左侧侧边栏的「触发器」图标(时钟样式)
- 点击右下角「添加触发器」按钮
- 选择要运行的函数:
renameSheet - 选择事件来源:
电子表格 - 选择事件类型:
编辑时 - 其余选项保持默认,点击保存即可
注意事项:
- 提前在名为Data的工作表A列从A2行开始填入所有可选的工作表名称
- 工作表名称不能包含
/ \ ? * : [ ]等特殊字符,也不能和当前表格内已有工作表重名,否则会执行报错- 如果修改了Data表A列的可选名称列表,重新运行一次
renameSheet函数即可更新下拉选项
内容的提问来源于stack exchange,提问作者Nour
相关产品推荐
相关产品推荐

