如何在Apps Script中适配Google Sheets各类货币格式?
修改方案
直接重构你的配置对象,把单一货币符号改成完整的自定义数字格式字符串,同时补全格式应用的代码逻辑,就能覆盖所有特殊格式的货币需求。
修改后的完整脚本
function onEdit(e) { // 每个货币对应完整的Google Sheets自定义数字格式 const currencyFormats = { 'us dollar': '$#,###0.00', 'euro': '€#,###0.00', '阿尔巴尼亚列克': 'Lek#,###0.00', '阿尔及利亚第纳尔': 'din#,###0.00', '白俄罗斯卢布': '#,###0.00 p.', '丹麦克朗': '#,###0.00 kr.' // 可继续添加其他货币的格式 }; let sheet; // 校验触发条件:编辑事件有效、编辑单元格为G13、所在工作表是Start if (!e || !e.value || e.range.getA1Notation() !== 'G13' || (sheet = e.range.getSheet()).getName() !== 'Start') { return; } // 获取选中货币对应的格式 const targetFormat = currencyFormats[e.value.toLowerCase()]; if (!targetFormat) { // 若选中的货币不在配置内,可清空格式或做其他处理 sheet.getRange("A1:A100").setNumberFormat(""); // 替换为你的实际数据范围 return; } // 将格式应用到目标数据区域(示例用A1:A100,替换成你需要格式化的单元格范围) sheet.getRange("A1:A100").setNumberFormat(targetFormat); }
关键改动说明
- 重构配置逻辑:不再仅存储货币符号,直接存储Google Sheets支持的完整自定义数字格式字符串,比如:
- 前缀特殊文本格式:
Lek#,###0.00对应显示Lek1,000.00 - 后缀单位格式:
#,###0.00 kr.对应显示1,000.12 kr.
- 前缀特殊文本格式:
- 修复语法问题:原脚本中
const format = ${currency}#,###0.00;是无效的模板字符串写法,现在直接从配置中读取完整格式,避免语法错误。 - 补全格式应用步骤:原脚本仅定义了格式变量但未实际应用到单元格,现在添加
setNumberFormat方法,将配置好的格式批量应用到目标数据区域。
扩展提示
如果需要新增其他货币支持,只需在currencyFormats对象中添加对应的键值对即可,格式规则完全遵循Google Sheets自定义数字格式语法(比如不需要小数位可写成Lek#,###)。
内容的提问来源于stack exchange,提问作者KIM
相关产品推荐
相关产品推荐

