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

使用Google Apps Script同步谷歌表格到Firebase时JSON格式不符求助

调整Google Apps Script脚本以生成与表格匹配的JSON格式

当前脚本生成的是以idName为键的对象结构,要得到和谷歌表格一致的格式,需改为数组形式——每个数组元素对应表格中的一行数据,用表头字段作为键名。

修改后的完整脚本如下:

var secret = 'XXXXXXXXXXX'

function getFirebaseUrl(jsonPath) {
  return (
    'https://XXXXXXXXXXXXXXXXX.com/' +
    jsonPath +
    '.json?auth=' +
    secret
  )
}

function syncMasterSheet(excelData) {
  var options = {
    method: 'put',
    contentType: 'application/json',
    payload: JSON.stringify(excelData)
  }
  var fireBaseUrl = getFirebaseUrl('moedas')
  UrlFetchApp.fetch(fireBaseUrl, options)
}

function startSync() {
  var sheet = SpreadsheetApp.getActiveSheet()
  var [rows, columns] = [sheet.getLastRow(), sheet.getLastColumn()]
  var data = sheet.getRange(1, 1, rows, columns).getValues();
  
  // 提取表格第一行作为JSON的键名
  var headers = data[0];
  // 存储最终的数组格式数据
  var dataArray = [];

  // 从第二行开始遍历数据(跳过表头行)
  for(var i=1; i < data.length; i++) {
    var dataRow = data[i];
    var rowObject = {};
    // 按表头字段匹配每行单元格内容
    for(var j=0; j < headers.length; j++) {
      rowObject[headers[j]] = dataRow[j];
    }
    dataArray.push(rowObject);
  }

  syncMasterSheet(dataArray)
}

核心修改说明:

  1. 提取表格第一行作为表头headers,确保JSON的键名与表格表头完全一致
  2. 将原脚本的对象存储结构改为数组dataArray,每行数据生成一个对象后推入数组
  3. 最终同步到Firebase的是数组格式数据,结构与表格一一对应:数组元素对应表格行,键名对应表头,值对应单元格内容

生成的JSON格式示例:

[
  {
    "moedaName": "示例货币1",
    "idName": "ID1",
    "currentDate": "2024-05-20",
    "currentValue": 5.2,
    "dailyVar": 0.1,
    "moedaImg": "img-url-1"
  },
  {
    "moedaName": "示例货币2",
    "idName": "ID2",
    "currentDate": "2024-05-20",
    "currentValue": 3.8,
    "dailyVar": -0.05,
    "moedaImg": "img-url-2"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:31:09