如何使用Google Script在Google Sheets单元格为Faux时隐藏绘图
问题解决说明
原有代码报错及功能不生效的原因
- 语法错误:
var ez = s.getRange('B42')行末尾缺少分号,导致解析器无法正确识别后续的if语句,抛出if is not defined报错 - 取值错误:
getRange('B42')获取的是单元格范围对象,不是单元格内的文本值,需要追加.getValue()方法才能拿到B42的内容 - 字符串未加引号:判断条件里的
Faux是文本值,需要用引号包裹,否则代码会将其识别为未定义的变量触发报错 - 无效逻辑:你定义的
student对象和隐藏绘图的需求无关,Google Sheets中隐藏自定义绘图需要调用对应绘图的setVisible()方法
修正后可直接使用的代码
function cacher1() { // 获取当前表格和工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const activeSheet = ss.getActiveSheet(); // 读取B42单元格的文本值 const cellValue = activeSheet.getRange('B42').getValue(); // 获取工作表内所有自定义绘图 const allDrawings = activeSheet.getDrawings(); // 判断B42值是否为"Faux" if (cellValue === "Faux") { // 遍历所有绘图,全部隐藏 allDrawings.forEach(drawing => { drawing.setVisible(false); }) } else { // 如果不需要非"Faux"时自动显示绘图,可删除整个else段 allDrawings.forEach(drawing => { drawing.setVisible(true); }) } }
自动触发设置步骤
如果需要B42值变动时自动执行隐藏/显示逻辑,可按以下步骤设置触发器:
- 打开Google Sheets的Apps Script编辑器界面
- 点击左侧菜单的「触发器」选项(闹钟图标)
- 点击右下角「添加触发器」
- 选择要运行的函数为
cacher1,事件来源选择「电子表格」,事件类型选择「编辑」,保存即可
内容的提问来源于stack exchange,提问作者GSF Celtus
相关产品推荐
相关产品推荐

