Google Sheets通过脚本移除指定标签页$符号报错解决
错误原因
setNumberFormat() 是单元格区域(Range 对象)的内置方法,并不属于工作表(Sheet 对象),你当前直接对通过 getSheetByName() 获取到的工作表对象调用该方法,就会触发「不是函数」的类型错误。
另外你原本的逻辑只设置数字格式,无法处理「粘贴后带$的内容是文本格式」的场景:这类内容本质是字符串,光改单元格格式不会自动去掉$符号,必须先对值本身做清洗转换。
修复方案
完整可运行代码如下:
function ToNumber(){ const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetSheet = ss.getSheetByName("SF load copy"); // 获取当前工作表所有存了数据的单元格区域 const dataRange = targetSheet.getDataRange(); // 批量清洗值:移除所有$符号,把文本类金额转为纯数字 const rawValues = dataRange.getValues(); const cleanedValues = rawValues.map(row => { return row.map(cellVal => { if (typeof cellVal === 'string' && cellVal.includes('$')) { return parseFloat(cellVal.replaceAll('$', '')); } return cellVal; }) }) // 把清洗后的值写回表格 dataRange.setValues(cleanedValues); // 给处理后的区域设置两位小数的纯数字格式,不带货币符号 dataRange.setNumberFormat("0.00"); }
可选调整
- 如果你不需要处理全表数据,只想处理指定范围,可以把
targetSheet.getDataRange()替换成自定义范围,比如targetSheet.getRange("B2:D2000")就只会处理B列到D列、第2行到2000行的区域。 - 如果需要其他数字格式,直接修改
setNumberFormat()里的格式字符串即可,比如要千分位分隔就写"#,##0.00"。
内容的提问来源于stack exchange,提问作者Caroline Silva
相关产品推荐
相关产品推荐

