Google Apps Script解析JSON时点表示法取值返回null问题
问题根因
返回null是三个错误导致的:
- 未做JSON反序列化:UrlFetchApp发起GET请求返回的初始结果是纯文本字符串,不是可直接通过点语法取值的结构化对象,必须先通过
JSON.parse()做格式转换 - 根结构判断错误:接口返回的内容最外层是
[]包裹的对象数组,不是单个对象,直接在数组类型上调用点语法取内部对象属性,逻辑不成立 - 属性名大小写不匹配:JSON结构里的所有字段名都是全大写格式(比如省份字段是
PROVINCIA),JavaScript对象属性名严格区分大小写,你写的小写provincia匹配不到对应键,自然返回null
可直接运行的解析代码
function parseJsonData() { // 替换为你实际的GET请求逻辑,getContentText()拿到原始响应文本 const rawText = UrlFetchApp.fetch("你的接口请求地址").getContentText(); // 把JSON字符串转成可操作的数组对象 const dataArr = JSON.parse(rawText); // 遍历单条记录测试取值 dataArr.forEach((singleItem, idx) => { // 字段名必须和JSON里的全大写键完全一致 Logger.log(`第${idx + 1}条记录省份值:${singleItem.PROVINCIA}`); }); // 直接生成适配Google Sheets写入的二维数组,字段顺序和你要求的完全对应 const sheetWriteData = dataArr.map(item => [ item.NOMBRE, item.ACTIVO, item.CODIGO, item.CALLE, item.NUMERO, item.PROVINCIA, item.LOCALIDAD, item.ZONA, item.SUPERFICIE, item.CODIGOEXTERNO ]); }
效果说明
代码运行后日志会正确打印每条记录的省份字段值,不会再返回null。生成的sheetWriteData变量是4行10列的二维数组,结构里的null、布尔值、数字类型都会原样保留,和你给出的首行示例数据格式完全匹配,后续要写入表格直接传入setValues()方法即可,不需要额外做结构调整。
内容的提问来源于stack exchange,提问作者Joaquin
相关产品推荐
相关产品推荐

