通过AppScript插入公式时出现#Error!/#Name!错误求助
解决AppScript插入公式出现#Error!/#Name!的问题
核心原因
- 引号转义错误:代码中使用了HTML实体
"作为引号,这会导致单元格公式中出现无效的"字符串,而非正确的引号,触发解析错误。 - 函数名与语言环境不匹配:AppScript的
setFormula默认使用英文函数名(如IF、VLOOKUP),但你的公式用了葡萄牙语函数名(SE、PROCV),若未适配语言环境会引发#Name!错误。
修正方案
方案1:使用setFormulaLocal适配本地语言函数名
setFormulaLocal会自动匹配当前Sheets文档的语言设置,直接使用本地语言函数名即可,同时修正引号转义(用普通双引号替代"):
targetSheet.getRange('U2:V').clearContent(); // 使用setFormulaLocal,保留葡萄牙语函数名,修正引号 rangeU2.setFormulaLocal('=ARRAYFORMULA(SEERRO(SE(M2:M = "", "", PROCV(M2:M; Players!C2:E; 3; FALSO)), ""))'); rangeV2.setFormulaLocal('=ARRAYFORMULA(SE(S2:S = "", "", SE(U2:U = "", "", SE(S2:S=U2:U, G2:G, SE(G2:G="victory", "defeat", "victory")))))');
方案2:改用英文函数名配合setFormula
如果习惯用英文函数名,直接替换为对应英文函数,同时修正引号:
targetSheet.getRange('U2:V').clearContent(); // 替换为英文函数名:IF→SE, VLOOKUP→PROCV, IFERROR→SEERRO rangeU2.setFormula('=ARRAYFORMULA(IFERROR(IF(M2:M = "", "", VLOOKUP(M2:M, Players!C2:E, 3, FALSE)), ""))'); rangeV2.setFormula('=ARRAYFORMULA(IF(S2:S = "", "", IF(U2:U = "", "", IF(S2:S=U2:U, G2:G, IF(G2:G="victory", "defeat", "victory")))))');
验证步骤
- 替换代码中的
"为普通双引号,选择上述任一方案修改函数名和方法。 - 重新运行脚本,检查单元格公式是否正常显示并计算结果。
内容的提问来源于stack exchange,提问作者David DegPlus
相关产品推荐
相关产品推荐

