Google Apps Script onEdit调用列显隐双函数 第二个脚本失效咨询
问题排查与修复方案
核心错误原因
- 你在
onEdit2中使用了首字母大写的True,而JavaScript/Google Apps Script的布尔值常量为全小写的true和false,大写的True会被识别为未定义变量,直接触发代码报错,导致整个函数终止运行。
其他潜在问题修复建议
- 增加工作表存在性判断:如果指定的工作表名称不存在,
getSheetByName会返回null,直接调用方法会报错打断执行,建议添加非空判断再执行后续逻辑。 - 可选性能优化:当前两个函数每次编辑都会遍历所有指定工作表,你可以结合onEdit的事件对象,仅处理当前编辑的工作表,减少不必要的性能消耗,该优化不影响功能运行,可按需调整。
修复后的完整代码
function onEdit() { onEdit1(); onEdit2(); } function onEdit1() // Original Script { var ss = SpreadsheetApp.getActiveSpreadsheet(); ["Calc", "Sheet1", "Sheet2", "Sheet3","Sheet4"].forEach(function (s) { var sheet = ss.getSheetByName(s); if(!sheet) return; // 跳过不存在的工作表 var st = sheet.getRange("B2").getValue(); if(st == false) { sheet.hideColumn(sheet.getRange("W:Z")); sheet.hideColumn(sheet.getRange("AA:AK")); sheet.hideColumn(sheet.getRange("AL:AN")); sheet.hideColumn(sheet.getRange("AO:AO")); sheet.hideColumn(sheet.getRange("AP:AP")); } else { sheet.unhideColumn(sheet.getRange("W:Z")); sheet.unhideColumn(sheet.getRange("A:K")); sheet.unhideColumn(sheet.getRange("AL:AN")); sheet.unhideColumn(sheet.getRange("AO:AO")); sheet.unhideColumn(sheet.getRange("AP:AP")); } })} function onEdit2() /// 2nd script { var ss = SpreadsheetApp.getActiveSpreadsheet(); ["Duo","Sheet1","Sheet2"].forEach(function (s) { var sheet = ss.getSheetByName(s); if(!sheet) return; // 跳过不存在的工作表 var st = sheet.getRange("AC5").getValue(); if(st == true) // 修复布尔值大小写问题 { sheet.unhideColumn(sheet.getRange("AU:BH")); } else { sheet.hideColumn(sheet.getRange("AU:BH")); } })}
内容的提问来源于stack exchange,提问作者yoenoess
相关产品推荐
相关产品推荐

