如何使用Google Apps Script实现Google Sheets复选框控行隐藏及重置
Google Sheets 手游套装成本计算工具GAS实现代码
你可以先把重置功能的复选框放在H17单元格(可根据你的需要调整代码里的单元格坐标),下面是完整可直接使用的onEdit触发器代码:
function onEdit(e) { // 获取当前表格和第一个工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheets()[0]; // 配置项:可根据你的实际表格调整参数 const CONFIG = { // 控制隐藏已集齐套装的复选框位置 hideCompleteCell: 'H16', // 重置功能的复选框位置 resetCell: 'H17', // 统计的最大行数,可根据你的套装总数量调整 maxRow: 100, // 复选框所在列范围:B到F对应列号2到6 checkboxColStart: 2, checkboxColEnd: 6 }; // 获取本次编辑的单元格位置 const editedRange = e.range; const editedA1 = editedRange.getA1Notation(); // 触发逻辑1:编辑了隐藏已集齐套装的控制复选框 if (editedA1 === CONFIG.hideCompleteCell) { const isHideChecked = editedRange.getValue() === 'Yes'; if (isHideChecked) { // 遍历所有套装行,默认第一行是表头,从第2行开始遍历 for (let row = 2; row <= CONFIG.maxRow; row++) { // 获取当前行B到F列的所有复选框值 const rowValues = sheet.getRange(row, CONFIG.checkboxColStart, 1, CONFIG.checkboxColEnd - CONFIG.checkboxColStart + 1).getValues()[0]; // 判断是否所有复选框都是Yes(即套装已集齐) const isComplete = rowValues.every(val => val === 'Yes'); if (isComplete) { sheet.hideRows(row); } else { sheet.showRows(row); } } } else { // 未勾选时显示所有行 sheet.showRows(1, CONFIG.maxRow); } return; } // 触发逻辑2:编辑了重置复选框 if (editedA1 === CONFIG.resetCell) { const isResetChecked = editedRange.getValue() === 'Yes'; if (isResetChecked) { // 1. 把所有B到F列的复选框设为No(未勾选) const checkboxRange = sheet.getRange(2, CONFIG.checkboxColStart, CONFIG.maxRow - 1, CONFIG.checkboxColEnd - CONFIG.checkboxColStart + 1); checkboxRange.setValue('No'); // 2. 显示所有隐藏的行 sheet.showRows(1, CONFIG.maxRow); // 3. 自动把重置复选框恢复为未勾选状态,方便下次使用 editedRange.setValue('No'); } return; } }
使用说明
- 把上述代码替换你原来的脚本代码后保存即可,不需要额外设置触发器,
onEdit是GAS内置的编辑触发函数,你修改表格内容时会自动运行 - 如果你的表格表头不是1行、或者复选框列、控制单元格位置有变化,直接修改代码开头
CONFIG里的对应参数即可 - 如果你的表格第一行就是套装数据,把遍历的起始行
row = 2改成row = 1即可
内容的提问来源于stack exchange,提问作者Daniel De Haas
相关产品推荐
相关产品推荐

