如何调整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"}, ...]
额外修复:脚本结构与语法问题
你的原脚本存在两个影响运行的问题,需要同步修正:
doGet函数被嵌套在GETJOBDATA内部,Web App无法识别它作为请求处理函数,需将其移到外部;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
相关产品推荐
相关产品推荐

