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

如何在Google Apps Script中解析JSON并导入为Google Sheets表格

Google Apps Script解析API返回JSON并写入Google Sheets方案

错误原因

  • 你现有代码中response.getContentText()返回的是JSON格式的纯字符串,直接遍历字符串只能逐个拿到字符,无法获取结构化的字段数据,需要先将字符串解析为JavaScript对象。

完整实现代码

function parseApiDataToSheet() {
  // 替换为你自己的API请求地址和请求参数
  var url = "你的API请求地址";
  var options = {
    method: "GET",
    // 按需添加headers、muteHttpExceptions等参数
  };
  
  try {
    var response = UrlFetchApp.fetch(url, options);
    var text = response.getContentText();
    // 核心步骤:将JSON字符串解析为JS对象
    var data = JSON.parse(text);
    
    // 提取所有条目数据(list下的键是item_id,值为条目详情)
    var items = Object.values(data.list);
    if (items.length === 0) {
      Logger.log("未获取到有效条目");
      return;
    }
    
    // 定义你需要导出的表头,可按需增减字段
    var headers = [
      "条目ID", "标题", "链接", "摘要", "添加时间", "站点名称", "封面图链接"
    ];
    
    // 组装表格数据
    var tableData = [headers];
    items.forEach(item => {
      var row = [
        item.item_id,
        item.resolved_title,
        item.resolved_url,
        item.excerpt,
        // 时间戳转成可读日期,按需调整时区
        new Date(item.time_added * 1000),
        // 提取嵌套的域名信息
        item.domain_metadata?.name || "",
        item.top_image_url
      ];
      tableData.push(row);
    });
    
    // 写入当前活跃的Google Sheet,也可以指定ID打开对应表格
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    // 清空原有内容,不需要可以删除
    sheet.clearContents();
    // 批量写入数据,比逐行写入效率高
    sheet.getRange(1, 1, tableData.length, tableData[0].length).setValues(tableData);
    
    Logger.log("数据写入完成,共" + (tableData.length -1) + "条记录");
  } catch (e) {
    Logger.log("运行出错:" + e.message);
  }
}

注意事项

  • 可根据自己的需求调整headers和对应的行字段,比如需要保存收藏状态、字数等可以直接加对应的字段即可
  • 如果API请求需要鉴权,记得在options的headers里添加对应的Authorization等参数
  • 时间戳转换的时区默认使用脚本所在时区,可通过Utilities.formatDate自定义日期格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:54:01