如何用Google Apps Script提取JSON数组中全部列表数据?
解决Google Apps Script中提取JSON数组所有元素字段的问题
你当前的代码仅获取了isLabeledBy数组的第一个元素,要提取数组中所有元素的label值,需要遍历整个isLabeledBy数组。以下是修改后的完整代码:
var lesparams = params + '&limit=' + limit + '&next_page=' + next_page + '&ts=' + Math.floor((Math.random() * 10000000) + 1); var url = 'https://apis.alkemics.com/public/v1/products?' + lesparams; var content = UrlFetchApp.fetch(url, options); if (content.getResponseCode() == 200) { var retour = JSON.parse(content.getContentText()); next_page = retour.next_page; var data = retour.data; for (i = 0; i < data.length; i++) { var produit = data[i]; // 提取isLabeledBy数组中所有元素的label值 var labels = []; // 先判断isLabeledBy是否存在且为数组,避免空值报错 if (produit.isLabeledBy && Array.isArray(produit.isLabeledBy)) { labels = produit.isLabeledBy.map(item => { // 每个item判断isConceptualizedBy是否存在,再取label return item.isConceptualizedBy ? item.isConceptualizedBy.label : ''; }); } // 将labels数组转为逗号分隔的字符串(如果需要保留数组结构,直接用labels即可) var line = [labels.join(', ')]; produits.push(line); total = total + 1; } } else { Logger.log('Error in GET /contents/{contentid}') }
关键修改说明:
- 新增
produit.isLabeledBy的存在性和数组类型判断,避免接口返回空值时脚本报错 - 使用
map()方法遍历isLabeledBy数组,批量提取每个元素下的isConceptualizedBy.label值 - 用
join(', ')将多个label合并为字符串,适合直接写入Google Sheets单元格;若需保留数组结构,直接将labels放入line数组即可 - 对
isConceptualizedBy做空值判断,防止因字段缺失导致的报错
内容的提问来源于stack exchange,提问作者user19870352
相关产品推荐
相关产品推荐

