如何调整Google Sheets格式使其导出JSON匹配Firebase现有格式
Google Sheets导出匹配Firebase格式JSON操作步骤
核心问题说明
之前导出格式不匹配的根本原因有两个:一是表格表头没有和Firebase字段一一对应,二是通用导出脚本生成的是数组结构,和Firebase需要的键值对对象结构不兼容,按下面的步骤调整后可以直接导出可导入的文件,不需要手动修改JSON内容。
步骤1:调整表格列结构
打开语录表格,把第一行表头严格按以下规则设置,不要留多余列、不要使用合并单元格:
- A列:列头留空,该列存储每条语录的唯一ID。不想手动输入的话,直接在A2单元格填入公式
=LOWER(CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,4294967295),8))),下拉到所有数据行,就能自动生成和Firebase原生ID格式完全一致的20位十六进制ID,不会出现重复。 - B列:列头填
content,列内每行对应填入单条语录的正文内容。 - C列:列头填
author,列内每行对应填入该条语录的作者信息。 - D列:列头填
source,列内每行对应填入语录出处,没有出处的单元格直接留空即可。
步骤2:替换导出脚本
之前用的通用导出脚本不匹配Firebase结构,直接替换成定制版本:
- 打开表格顶部菜单栏「扩展程序」-「Apps脚本」,删除编辑器里原有所有代码
- 粘贴以下代码:
function exportToFirebaseJson() { const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const allData = activeSheet.getDataRange().getValues(); // 初始化Firebase要求的根结构 const exportResult = { quotes: {} }; // 跳过表头行,从第二行开始遍历数据 for (let i = 1; i < allData.length; i++) { const currentRow = allData[i]; const entryId = currentRow[0]; // 跳过ID为空的无效行 if (!entryId) continue; // 按字段映射组装单条语录数据,空值自动补空字符串避免字段缺失 exportResult.quotes[entryId] = { content: currentRow[1] || "", author: currentRow[2] || "", source: currentRow[3] || "" }; } // 生成格式化的带缩进JSON,方便检查 const jsonString = JSON.stringify(exportResult, null, 2); // 导出文件到谷歌云盘根目录 DriveApp.createFile("firebase-quotes-import.json", jsonString, MimeType.PLAIN_TEXT); // 日志区同步打印结果,可直接复制 Logger.log(jsonString); }
- 点击编辑器顶部的保存按钮,给项目随便起个名字比如「Firebase导出工具」保存即可。
步骤3:导出验证
- 选中脚本编辑器顶部的函数下拉框,选择
exportToFirebaseJson,点击运行按钮 - 第一次运行会弹出授权提示,按页面提示完成谷歌账号授权即可(脚本只操作你自己的表格数据,不会对外传输)
- 运行完成后,要么在编辑器的日志区直接复制生成的JSON内容,要么打开谷歌云盘根目录,找到生成的
firebase-quotes-import.json文件 - 导出的JSON结构和现有Firebase数据库结构完全一致,可以直接导入使用,不需要手动调整字段。
注意事项
- 不要在数据区域内插入多余列、加备注行或者合并单元格,否则会导致导出的JSON出现多余字段
- 后续新增语录时,直接在表格已有数据下方新增行,A列的ID公式下拉填充即可,重新运行脚本就能生成包含新内容的JSON文件
- 如果需要调整字段,直接修改脚本里的字段映射和表格列头即可,不要改动核心结构。
内容的提问来源于stack exchange,提问作者user18105926
相关产品推荐
相关产品推荐

