Google Sheets 实现单元格更新后自动隐藏/取消隐藏行的方法咨询
Google Sheets 自动隐藏/取消隐藏行功能实现方案
实现逻辑
直接使用Google Sheets内置的onEdit编辑触发事件,监听指定单元格的内容变更,匹配规则自动执行行显隐、内容清空、焦点跳转操作,无需额外按钮或手动配置流程。
功能对应关系
- A3单元格内容更新时的触发动作:
- 清空指定业务范围内所有已填写的字段内容
- 批量隐藏工作表内除第9行外的所有行
- 第9行完成有效录入(A9填写物料编码、B9填写对应数量)时的触发动作:
- 自动取消隐藏第9行正下方的相邻行
- 自动将编辑焦点跳转至A10单元格
可直接复用的脚本
打开对应表格的脚本编辑器,替换默认代码为以下内容即可生效:
function onEdit(e) { const activeSheet = e.source.getActiveSheet(); const editedRange = e.range; const editRow = editedRange.getRow(); const editCol = editedRange.getColumn(); // 监听A3单元格更新 if (editRow === 3 && editCol === 1) { // 清空业务区域的填写内容,可根据实际表格调整范围 activeSheet.getRange("A2:B2000").clearContent(); // 收集所有需要隐藏的行号,批量操作减少卡顿 const totalRows = activeSheet.getMaxRows(); const rowsToHide = []; for (let rowIndex = 1; rowIndex <= totalRows; rowIndex++) { if (rowIndex !== 9) rowsToHide.push(rowIndex); } activeSheet.hideRowsList(rowsToHide); // 强制保证第9行可见 activeSheet.showRows(9); return; } // 监听第9行的录入操作 if (editRow === 9) { // 校验A9、B9均已录入有效内容 const a9Value = activeSheet.getRange("A9").getValue(); const b9Value = activeSheet.getRange("B9").getValue(); if (a9Value && b9Value) { // 取消隐藏第9行下方的相邻行 activeSheet.showRows(10); // 跳转焦点至A10单元格 activeSheet.getRange("A10").activate(); } } }
自定义调整提示
- 代码中
A2:B2000的清空范围可根据实际业务区域修改,避免误删固定表头、自动计算的公式内容 - 如果需要取消隐藏连续多行,可修改
showRows的参数,比如activeSheet.showRows(10, 5)代表从第10行开始,取消隐藏连续5行 - 简单触发器默认仅对当前工作表生效,如果需要跨表触发逻辑,可在代码开头通过
getSheetByName("工作表名称")指定目标操作对象
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

