使用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) }
核心修改说明:
- 提取表格第一行作为表头
headers,确保JSON的键名与表格表头完全一致 - 将原脚本的对象存储结构改为数组
dataArray,每行数据生成一个对象后推入数组 - 最终同步到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
相关产品推荐
相关产品推荐

