使用Apps Script查找并隐藏名称含最新日期的Pipeline History工作表
隐藏最新日期的Pipeline History工作表
你已经完成了筛选目标工作表的第一步,接下来只需要提取日期、找出最新项并执行隐藏操作即可。以下是完整实现代码和说明:
完整代码
function hideLatestPipelineHistorySheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var allSheets = ss.getSheets(); var searchText = "Pipeline History"; var pipelineHistorySheets = allSheets.filter(s => s.getSheetName().includes(searchText)); // 无匹配工作表时直接结束 if (pipelineHistorySheets.length === 0) return; // 初始化最新工作表和日期 var latestSheet = pipelineHistorySheets[0]; var latestDate = getDateFromSheetName(latestSheet.getSheetName()); // 遍历所有目标表,找出日期最新的 pipelineHistorySheets.forEach(sheet => { var currentDate = getDateFromSheetName(sheet.getSheetName()); if (currentDate > latestDate) { latestDate = currentDate; latestSheet = sheet; } }); // 隐藏最新工作表 latestSheet.hideSheet(); } // 从工作表名称中提取日期并转为Date对象 function getDateFromSheetName(sheetName) { // 匹配mm-dd-yyyy格式的日期片段 var dateParts = sheetName.match(/(\d{2})-(\d{2})-(\d{4})/); if (dateParts) { // 月份从0开始,需减1 return new Date(dateParts[3], dateParts[1] - 1, dateParts[2]); } // 未匹配到日期时返回一个极早的日期,确保不会被选为最新项 return new Date(0); }
关键逻辑说明
- 日期提取:通过正则表达式
/(\d{2})-(\d{2})-(\d{4})/抓取工作表名称中的日期字符串,转换为可比较的Date对象。 - 最新项筛选:遍历所有目标工作表,逐个比较日期,保留日期最大的工作表。
- 隐藏操作:调用
hideSheet()方法隐藏目标工作表,若需要禁止用户手动取消隐藏,可改用hideSheet({ skipUi: true })。
内容的提问来源于stack exchange,提问作者Cora Gadd
相关产品推荐
相关产品推荐

