请求编写Google Sheets onEdit脚本:通过控制表复选框管理行列显隐
解决方案:Google Sheets 复选框控制目标工作表行列显示/隐藏
实现脚本
打开你的Google表格,进入扩展程序 > Apps 脚本,替换默认代码为以下内容:
function onEdit(e) { // 配置参数:根据你的表格实际情况修改 const CONTROL_SHEET = "Control"; const TARGET_SHEET = "目标工作表名称"; // 替换为实际目标表名 const CONTROL_PRODUCT_COL = 1; // 控制表商品名列 const CONTROL_CHECKBOX_COL = 2; // 控制表复选框列 const TARGET_VERTICAL_ROW_HEADER = "A:A"; // 目标表纵向商品名列 const TARGET_HORIZONTAL_COL_HEADER = "1:1"; // 目标表横向商品名行 // 仅响应控制表复选框的编辑事件 const editedSheet = e.range.getSheet(); if (editedSheet.getName() !== CONTROL_SHEET || e.range.getColumn() !== CONTROL_CHECKBOX_COL) return; // 获取当前编辑的商品名和复选框状态 const productName = editedSheet.getRange(e.range.getRow(), CONTROL_PRODUCT_COL).getValue(); const isVisible = e.range.getValue(); const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(TARGET_SHEET); if (!targetSheet) return; // 处理纵向行显示/隐藏 const verticalValues = targetSheet.getRange(TARGET_VERTICAL_ROW_HEADER).getValues(); verticalValues.forEach((row, idx) => { if (row[0] === productName) { isVisible ? targetSheet.showRows(idx + 1) : targetSheet.hideRows(idx + 1); } }); // 处理横向列显示/隐藏 const horizontalValues = targetSheet.getRange(TARGET_HORIZONTAL_COL_HEADER).getValues()[0]; horizontalValues.forEach((col, idx) => { if (col === productName) { isVisible ? targetSheet.showColumns(idx + 1) : targetSheet.hideColumns(idx + 1); } }); }
配置说明
- 修改工作表名称:将
TARGET_SHEET的值替换为你的目标工作表实际名称(比如表格中的"Sheet2") - 调整列/行对应关系:根据你的表格结构,修改
CONTROL_PRODUCT_COL、CONTROL_CHECKBOX_COL、TARGET_VERTICAL_ROW_HEADER、TARGET_HORIZONTAL_COL_HEADER这几个参数的值,确保对应表格中的实际位置
使用步骤
- 保存脚本,给项目命名(例如"ProductVisibilityManager")
- 返回Google表格,在Control表中勾选或取消复选框,验证目标工作表的对应行列是否自动切换显示/隐藏状态
首次运行时需完成授权,按照页面提示允许脚本访问你的表格数据即可
内容的提问来源于stack exchange,提问作者Hari Kara
相关产品推荐
相关产品推荐

