Google Sheets宏无法执行TEXTE函数,设置公式报错#ERROR!
问题原因与解决方案
问题根源
Google Apps Script的setFormula()方法仅支持英文版本的Google Sheets函数名,你公式里的TEXTE是法语(或其他非英文区域)的函数名,对应的英文函数是TEXT。手动输入时Sheets会自动根据你的区域设置转换函数名,但脚本里必须用英文函数名才能被正确识别。
另外,你宏里的"是HTML转义的双引号,虽然语法上没问题,但换成更简洁的写法能避免转义混乱。
修复后的宏代码
/** @OnlyCurrentDoc */ function Mymacro() { var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName('Program'); if (!sheet) return; // 防止找不到工作表报错 // 清空所有内容(优化写法,无需激活单元格) sheet.getDataRange().clear({contentsOnly: true, skipFilteredRows: true}); // 设置A1单元格公式(用TEXT替换TEXTE,模板字符串简化引号处理) sheet.getRange('A1').setFormula(`=INDEX(SPLIT(ARRAYFORMULA(TEXT(INDEX(IMPORTHTML("https://dividendhistory.org/payout/O/", "TABLE", 2),,2),"YYYY-MM-DD")),"-"),,1)`); // 设置B1单元格公式 sheet.getRange('B1').setFormula(`=INDEX(SPLIT(INDEX(IMPORTHTML("https://dividendhistory.org/payout/O/", "TABLE", 2),,3),"$"),,1)`); };
额外优化说明
- 移除了不必要的
activate()操作:脚本中直接操作Range对象即可,无需激活单元格,能显著提升执行效率。 - 增加工作表存在性检查:避免因工作表名称错误导致脚本崩溃。
- 使用ES6模板字符串(反引号
`)包裹公式,内部直接用双引号,无需额外转义,代码可读性更强。
内容的提问来源于stack exchange,提问作者Megapixel
相关产品推荐
相关产品推荐

