Google Apps Script文本比较报错,数值比较正常,求原因解析
问题分析:单元格文本判断引发的语法错误
错误原因
你代码里的核心问题是混淆了赋值运算符与比较运算符:
- 错误代码中
if(data.getCell(2, i).getValue() = "Alt")使用了单个等号=,这是JavaScript的赋值运算符,作用是把右侧值赋给左侧变量。但data.getCell(2, i).getValue()是函数返回值,属于不可赋值的表达式,把它放在赋值运算符左侧会直接触发ReferenceError: Invalid left-hand side in assignment。 - 而数值比较用的
<是比较运算符,仅用于判断值的大小关系,不会尝试修改任何变量,语法完全合法,因此函数能正常执行。
修正后的代码
将判断条件改为相等比较运算符(推荐用===做严格相等判断):
function hideOldColumns() { var ss = SpreadsheetApp.getActive(); var sheet = ss.getActiveSheet(); var data = sheet.getDataRange(); var lastColumn = data.getLastColumn() + 1; for(var i=1; i<lastColumn; i++) { // 使用严格相等运算符判断单元格值是否为"Alt" if(data.getCell(2, i).getValue() === "Alt") { sheet.hideColumns(i); } } };
额外提示:判断单元格包含"Alt"
如果需求是单元格包含"Alt"文本(而非严格等于),需要先将单元格值转为字符串,再用includes方法判断:
if(data.getCell(2, i).getValue().toString().includes("Alt")) { sheet.hideColumns(i); }
这样可以避免因单元格返回非字符串类型(如数字、布尔值)导致的判断失败。
内容的提问来源于stack exchange,提问作者orschiro
相关产品推荐
相关产品推荐

