Apps Script中if条件判断异常求助:相同值触发不等分支
问题解决建议
核心问题定位
你代码里的关键问题是:虽然已经将数组元素转成字符串存到oldnaz和newnaz变量里,但判断条件用的还是原数组的newnames[i]和oldnames[i+3],如果原数组元素不是纯字符串类型(比如是Google Sheets返回的带格式单元格值),即使内容看起来一致,也会被判定为不等。
修复步骤
改用转义后的变量做判断
把判断条件替换成已经转成字符串的newnaz和oldnaz,同时用严格不等运算符!==避免类型转换干扰:else if(newnaz !== oldnaz) { ss.getSheetByName(oldnaz).setName(newnaz); }清理隐形字符(可选)
如果仍出现判定不等的情况,大概率是字符串前后存在空格、换行或不可见字符,可在转字符串后加上trim()处理:var oldnaz = oldnames[i+3].toString().trim(); var newnaz = newnames[i].toString().trim();完整修复后的代码片段
for (var i=0 ; i<pocet2 ; i++) { var oldnaz = oldnames[i+3].toString().trim(); var newnaz = newnames[i].toString().trim(); if(newnaz === '' ) { ss.getSheetByName(oldnaz).setName((i+1).toString()); } else if(newnaz !== oldnaz) { ss.getSheetByName(oldnaz).setName(newnaz); } else { // 名称相同,无需操作 } }
额外排查点
可以临时打开Logger日志,打印变量的原始内容和长度,确认是否存在隐形字符:
Logger.log("oldnaz: '" + oldnaz + "', 长度: " + oldnaz.length); Logger.log("newnaz: '" + newnaz + "', 长度: " + newnaz.length);
内容的提问来源于stack exchange,提问作者Zaskar
相关产品推荐
相关产品推荐

