如何批量提取异步获取的JSON数组中所有对象ID?
提取JSON数组中所有ID的Google Apps Script解决方案
问题分析
你当前的代码通过手动指定数组索引(json[0]、json[1])提取ID,这种方式不仅无法自动覆盖所有元素,还会在数组长度变化时出现遗漏或错误。
解决方案
可以利用数组的map()方法遍历所有对象,批量提取ID,同时加入基础的错误处理避免异常:
返回ID数组(更灵活,方便后续处理)
function getID() { var url = 'https://data.com/api/v1/users/'; var res = UrlFetchApp.fetch(url); var content = res.getContentText(); var json = JSON.parse(content); // 确保解析结果是数组,避免非数组格式报错 if (!Array.isArray(json)) { return []; } // 提取所有ID,过滤掉无ID字段的无效项 var allIds = json.map(item => item.ID).filter(id => id !== undefined); return allIds; }
返回逗号分隔的字符串(和原代码输出格式一致)
如果需要保持原函数返回字符串的格式,只需在提取后用join()拼接:
function getID() { var url = 'https://data.com/api/v1/users/'; var res = UrlFetchApp.fetch(url); var content = res.getContentText(); var json = JSON.parse(content); if (!Array.isArray(json)) { return ''; } var allIds = json.map(item => item.ID).filter(id => id !== undefined); return allIds.join(', '); }
关键说明
map(item => item.ID):自动遍历数组中的每个对象,提取对应的ID字段,不管数组有多少元素都能覆盖。filter(id => id !== undefined):过滤掉数组中没有ID字段的对象,避免结果出现undefined。Array.isArray(json):检查接口返回的JSON是否为数组格式,防止非数组数据导致代码报错。
内容的提问来源于stack exchange,提问作者Diego Diaz
相关产品推荐
相关产品推荐

