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

MongoDB导入Google Sheets时$numberInt格式数值提取纯数字问题咨询

问题原因

你遇到的是MongoDB扩展JSON(BSON序列化后)的类型标记格式,数值、ObjectId、日期等类型会被包裹为带$前缀的键值对象,比如{"$numberInt":"3204"}、{"$oid":"xxx"}、{"$date":"xxx"},直接取整个对象就会输出完整结构而非值本身。

解决方法

先写一个通用的取值解析函数,自动识别带类型标记的字段并提取纯值,再替换原来的直接取值逻辑即可。调整后的完整脚本如下:

function importMongoDBData() {
  var sh1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("mongoDB")
  var getData = UrlFetchApp.fetch('URL').getContentText()
  var jsonObj = JSON.parse(getData)

  // 通用MongoDB扩展JSON值解析函数
  function parseMongoValue(val) {
    // 非对象类型直接返回
    if (typeof val !== 'object' || val === null) return val
    // 识别常见MongoDB类型标记
    if ('$numberInt' in val) return parseInt(val['$numberInt'])
    if ('$numberDouble' in val) return parseFloat(val['$numberDouble'])
    if ('$numberLong' in val) return BigInt(val['$numberLong']) // 长整型可按需转为普通数字
    if ('$oid' in val) return val['$oid']
    if ('$date' in val) return new Date(val['$date']) // 日期类型可按需格式化
    // 其他未匹配类型直接返回原值
    return val
  }

  // 先批量组装数据再写入,减少API调用提升运行效率
  var outputArr = []
  for(var i=0;i<jsonObj.length;i++){
    var row = [
      parseMongoValue(jsonObj[i]._id),
      parseMongoValue(jsonObj[i].status),
      parseMongoValue(jsonObj[i].amount),
      parseMongoValue(jsonObj[i].frequency),
      parseMongoValue(jsonObj[i].Payments),
      parseMongoValue(jsonObj[i].maxAmount),
      parseMongoValue(jsonObj[i].Requested),
      parseMongoValue(jsonObj[i].Offer),
      parseMongoValue(jsonObj[i].term),
      parseMongoValue(jsonObj[i].user),
      parseMongoValue(jsonObj[i].details),
      parseMongoValue(jsonObj[i].vendor),
      parseMongoValue(jsonObj[i].createdAt),
      parseMongoValue(jsonObj[i].updatedAt),
      parseMongoValue(jsonObj[i].boundaryAmount)
    ]
    outputArr.push(row)
  }
  // 一次性写入所有行
  if (outputArr.length > 0) {
    sh1.getRange(2, 1, outputArr.length, outputArr[0].length).setValues(outputArr)
  }
}

修改说明

  • parseMongoValue函数会自动匹配所有常见的MongoDB类型标记,直接提取纯值输出,不需要逐个字段手动指定结构
  • 优化了写入逻辑,将逐单元格写入改为批量数组写入,大幅提升大数据量时的运行速度,避免Google Apps Script超时
  • 完全兼容原有脚本的字段位置,不需要调整表格结构

内容的提问来源于stack exchange,提问作者FINISHUT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:04