如何用Google Apps Script为Google Sheets指定范围动态设置货币格式?
修改Google Sheets指定范围货币格式的脚本调整
以下是适配你需求的修改后脚本,当A3单元格的下拉值变化时,只会修改B3:B5和C6:C8这两个指定范围的货币格式,其他单元格保持原有格式:
const SHEET_NAME = 'Sheet1'; const CUR_CELL = 'A3'; // 定义需要修改格式的指定范围,可根据需求增减 const TARGET_RANGES = ['B3:B5', 'C6:C8']; const CURS = { dollar: '$', euro: '€', }; function onEdit(e) { const sheet = e.source.getActiveSheet(); // 判断是否是目标工作表和目标单元格的编辑操作 if (sheet.getName() !== SHEET_NAME || e.range.getA1Notation() !== CUR_CELL.toUpperCase()) { return; } const selectedCur = e.value.toLowerCase(); // 确认选中的货币类型在定义的列表中 if (!CURS[selectedCur]) { return; } const currencyFormat = `${CURS[selectedCur]}#,###.00`; // 遍历每个指定范围,设置货币格式 TARGET_RANGES.forEach(rangeA1 => { const range = sheet.getRange(rangeA1); // 获取范围的行数和列数,生成对应格式数组 const rowCount = range.getNumRows(); const colCount = range.getNumColumns(); const formatArray = Array(rowCount).fill().map(() => Array(colCount).fill(currencyFormat)); range.setNumberFormats(formatArray); }); }
关键改动说明:
- 新增
TARGET_RANGES数组:直接存放需要修改格式的A1符号范围,后续要调整范围只需修改这个数组,无需改动核心逻辑。 - 替换整列处理逻辑:不再处理整列,改为遍历每个指定范围单独设置格式,精准控制生效区域。
- 增加有效性判断:先校验选中的货币类型是否在
CURS定义中,避免无效输入导致脚本报错。 - 动态生成格式数组:根据每个范围的行列数生成对应长度的格式数组,确保范围里的每个单元格都应用正确格式。
内容的提问来源于stack exchange,提问作者KIM
相关产品推荐
相关产品推荐

