You need to enable JavaScript to run this app. 通过Google Apps Script在Sheets单元格写入公式无法保存问题求助
优惠活动
大模型
产品
解决方案
定价
更多

通过Google Apps Script在Sheets单元格写入公式无法保存问题求助

核心错误原因

你的代码存在Google Apps Script(基于JavaScript)的字符串语法错误:你使用双引号包裹整个公式字符串,但公式内部的"New Quote"、"Sent To Customer"同样使用了双引号,且没有做转义处理,脚本解析时会识别为字符串提前终止,触发语法错误,无法正常执行写入操作。

可直接运行的修正代码

推荐使用ES6模板字符串写法,不需要处理转义,可读性更高:

quotelist.getRange(`R${rowNumberForQuote}`).setFormula(`=IF(R${rowNumberForQuote}="New Quote","New Quote",IF(ISNA(VLOOKUP(B${rowNumberForQuote},'Form responses 4'!B:C,2,FALSE)),"Sent To Customer",VLOOKUP(B${rowNumberForQuote},'Form responses 4'!B:C,2,FALSE)))`);

如果需要兼容旧版JS语法,使用转义双引号的写法即可:

quotelist.getRange("R" + rowNumberForQuote).setFormula("=IF(R" + rowNumberForQuote + "=\"New Quote\",\"New Quote\",IF(ISNA(VLOOKUP(B" + rowNumberForQuote + ",'Form responses 4'!B:C,2,FALSE)),\"Sent To Customer\",VLOOKUP(B" + rowNumberForQuote + ",'Form responses 4'!B:C,2,FALSE)))");

优化建议

你的公式逻辑可以进一步简化,用IFNA函数替代IF+ISNA的组合,不需要重复写两次VLOOKUP,执行效率更高且更易维护,逻辑和你要求的完全一致:

quotelist.getRange(`R${rowNumberForQuote}`).setFormula(`=IF(R${rowNumberForQuote}="New Quote","New Quote",IFNA(VLOOKUP(B${rowNumberForQuote},'Form responses 4'!B:C,2,FALSE),"Sent To Customer"))`);

内容的提问来源于stack exchange,提问作者Simon Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 09:12:03