如何修改Google Apps脚本按标签十六进制颜色筛选工作表名称
实现按工作表标签颜色筛选的名称列表
你可以修改原有的SHEETNAMES函数,添加标签颜色筛选逻辑。利用Google Apps Script的getTabColor()方法获取工作表标签的十六进制颜色值,结合原有的选项逻辑,就能实现按颜色过滤的功能。
修改后的完整函数如下:
function SHEETNAMES(option = 0, filterColor = null) { var sheetNames = []; var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); var currSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var currSheetName = currSheet.getName(); for (var i = 0; i < sheets.length; i++) { var sheet = sheets[i]; var sheetName = sheet.getName(); var sheetColor = sheet.getTabColor(); // 颜色筛选判断:如果指定了颜色,仅匹配对应颜色的工作表 if (filterColor !== null && sheetColor !== filterColor) { continue; } // 原有选项逻辑 if (option === 0) { sheetNames.push([sheetName]); } else if (option === -1) { if (sheetName !== currSheetName) { sheetNames.push([sheetName]); } } else if (option === 1) { if (sheetName === currSheetName) { sheetNames.push([sheetName]); } } else { throw "Option argument must be -1, 0, or 1"; } } return sheetNames; }
使用示例
- 显示所有标签为绿色(#00ff00)的工作表名称:
=SHEETNAMES(0, "#00ff00") - 显示除当前工作表外,标签为红色(#ff0000)的工作表名称:
=SHEETNAMES(-1, "#ff0000") - 保留原有功能,不进行颜色筛选(和原函数用法一致):
=SHEETNAMES(0) // 所有工作表 =SHEETNAMES(-1) // 除当前外的所有工作表 =SHEETNAMES(1) // 当前工作表
说明
getTabColor()方法返回工作表标签的十六进制颜色字符串(如#00ff00),如果标签未设置颜色则返回null,你可以根据需求额外处理这种情况。- 新增的
filterColor参数是可选的,不传入时函数会保持原有逻辑运行。
内容的提问来源于stack exchange,提问作者wahyueka31
相关产品推荐
相关产品推荐

