You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:33:34