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

如何调整Google App Script的JSON输出格式以适配其他API

解决方法

核心修改:移除外层data字段

你只需要修改序列化JSON的代码行,去掉包裹temp的{data: ...}结构,直接序列化temp数组即可:

原代码:

const output = JSON.stringify({data: temp})

修改为:

const output = JSON.stringify(temp)

修改后输出的JSON格式会变为:

[{"fieldheader1": "result1", "fieldheader2": "result2"}, ...]

额外修复:脚本结构与语法问题

你的原脚本存在两个影响运行的问题,需要同步修正:

  1. doGet函数被嵌套在GETJOBDATA内部,Web App无法识别它作为请求处理函数,需将其移到外部;
  2. Authorization头的字符串拼接存在语法错误,需修正格式。

调整后的完整脚本如下:

function GETJOBDATA() {
  var url = "MYAPIURL";

  var headers = { 
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Basic " + "MYCODE" // 修复字符串拼接语法
  };

  var options = {
    "headers" : headers
  };
  var response = UrlFetchApp.fetch(url,options);

  const dataastext = response.getContentText()
  const data = JSON.parse(dataastext)

  const results = data.map(jobs => {
    return [jobs["PositionID"], jobs["PositionTitle"], jobs["PositionIndustry"]]
  })

  return results
}

// 独立的请求处理函数
function doGet(e) {
  // 读取表格数据
  const data = SpreadsheetApp.openById('GOOGLESHEETSID').getSheetByName('SHEETNAME').getDataRange().getValues();

  // 表头转为小写
  const headings = data[0].map(val => val.toString().toLowerCase());
  // 去掉表头行,保留数据行
  const rows = data.slice(1);

  // 转换为对象格式
  const temp = rows.map(row => { 
    const myObj = {}; 
    headings.forEach((heading, index) => { myObj[heading] = row[index]; }) 
    return myObj; 
  })

  // 序列化无外层字段的JSON
  const output = JSON.stringify(temp)

  // 返回JSON响应
  return ContentService.createTextOutput(output).setMimeType(ContentService.MimeType.JSON)
}

内容的提问来源于stack exchange,提问作者Chris-Ol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:42:08