将JSON文件数据导入Google Sheets,现有脚本解析后不知如何推进求指导
解决方案
你原有脚本已经完成了JSON解析、表头提取、数据格式化的核心步骤,冗余的逐行写入逻辑是导致操作卡壳的核心问题,调整后可直接批量写入数据,效率更高也更稳定。
修正后的完整脚本
function getContentJSON() { // 配置要读取的JSON文件名 const gFiles = "0080076042_jobToCAF.JSON"; // 获取目标工作表 const sheetSpr = SpreadsheetApp.getActiveSpreadsheet(); const sheetToImp = sheetSpr.getSheetByName("@ACTIONS_REPORT"); // 读取Drive中的JSON文件 const files = DriveApp.getFilesByName(gFiles); if (files.hasNext()) { const file = files.next(); // 按UTF-16编码读取文件内容,编码不符合时可修改为"UTF-8"测试 const content = file.getBlob().getDataAsString("UTF-16"); const json = JSON.parse(content); // 提取表头、生成格式化的行数据 const headers = Object.keys(json[0]); const values = json.map(e => headers.map(f => e[f])); // 把表头插入到数据第一行,不需要表头可注释掉本行 values.unshift(headers); // 清空原有表内数据,避免旧数据残留 sheetToImp.clearContents(); // 批量写入所有数据,比逐行appendRow效率高几十倍 sheetToImp.getRange(1, 1, values.length, values[0].length).setValues(values); } }
关键调整说明
- 移除了冗余的逐行
appendRow循环:逐行调用API在数据量大时极易卡顿超时,改用setValues批量写入可以一次性完成所有数据导入,执行效率大幅提升 - 新增了
clearContents逻辑:每次导入前清空目标表原有内容,避免旧数据和新导入数据混杂 - 直接复用已经生成的
values数组:原有代码已经完成了表头拼接、数据格式化的所有步骤,不需要重复遍历JSON生成行数据 - 可灵活调整导入规则:不需要每次导入表头时,注释掉
values.unshift(headers)这一行即可
内容的提问来源于stack exchange,提问作者Dmitriy Rudakov
相关产品推荐
相关产品推荐

