如何通过Google AppScript循环导入多页API数据至谷歌表格
解决Google Apps Script循环导入多页JSON到谷歌表格的问题
以下是修改后的代码,实现遍历28页数据并合并导入到同一张表格:
function getBaseJson() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Import1"); // 写入表头 var headerRow = ['JSONs']; sheet.getRange(1, 1, 1, headerRow.length).setValues([headerRow]); Logger.log("DEBUG: Saved header"); var tempItemDataArray = []; const totalPages = 28; // 明确遍历28页 // 循环遍历每一页 for (let page = 1; page <= totalPages; page++) { var url = `https://sports.core.api.espn.com/v2/sports/football/leagues/college-football/athletes?limit=1000&active=true&page=${page}`; var response = UrlFetchApp.fetch(url); var data = response.getContentText(); var result = JSON.parse(data); var myItems = result.items; // 提取当前页的所有value并追加到数组 for (var i = 0; i < myItems.length; i++) { for (var [key, value] of Object.entries(myItems[i])) { tempItemDataArray.push([value]); } } Logger.log(`DEBUG: 已导入第${page}页数据`); } // 将所有数据一次性写入表格,起始行是第2行 if (tempItemDataArray.length > 0) { sheet.getRange(2, 1, tempItemDataArray.length, 1).setValues(tempItemDataArray); Logger.log("DEBUG: 所有数据已保存完成"); } else { Logger.log("DEBUG: 未获取到任何数据"); } }
关键改动说明:
- 全局数据数组:把
tempItemDataArray初始化放在循环外,确保每一页的数据都能追加到同一个数组中,不会被重置 - 分页循环:用
for (let page = 1; page <= totalPages; page++)遍历1到28页,通过模板字符串动态替换URL中的page参数 - 批量写入:所有页面数据收集完成后,一次性调用
setValues写入表格,相比每页单独写入,大幅提升执行效率,减少Google服务调用次数 - 简化表头写入:直接用
sheet.getRange(1, 1, 1, headerRow.length).setValues([headerRow])替代原有的冗余代码,逻辑更清晰
内容的提问来源于stack exchange,提问作者DJ Luke
相关产品推荐
相关产品推荐

