Google Classroom列出所有班级仅返回500条,如何实现分页获取完整列表?
Google Classroom全量班级列表分页实现方案
Google Classroom API的
Courses.list接口单次请求最多返回500条班级数据,要获取全量数据需要通过nextPageToken实现分页遍历:每次请求后如果返回结果带nextPageToken,就将该令牌作为参数传入下一次请求,直到返回结果中无nextPageToken即可拉取到所有数据。
修改后完整代码
function listCourses() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName('Classes'); var arr = []; var pageToken = null; // 分页标记初始为空 do { // 每次请求携带当前分页令牌,指定单次拉取最大条数 var response = Classroom.Courses.list({ pageSize: 500, pageToken: pageToken }); var courses = response.courses || []; // 空值兼容,避免无数据时报错 for (var i = 0; i < courses.length; i++) { var course = courses[i]; var ids = course.id; var title = course.name; var sec = course.section; var state = course.courseState; var guardian = course.guardiansEnabled; arr.push([ids, title, state, guardian]); } // 更新分页令牌,无下一页时为null pageToken = response.nextPageToken; } while (pageToken); // 存在分页令牌就继续循环 // 可选:写入前清空原有旧数据,不需要可以删除本行 sh.getRange(2, 1, sh.getLastRow() - 1, 4).clearContent(); // 批量写入全量班级数据 if (arr.length > 0) { sh.getRange(2, 1, arr.length, arr[0].length).setValues(arr); } }
核心改动说明
- 新增
pageToken分页标记变量,初始值为空 - 外层嵌套
do...while循环,每次请求都带上当前分页令牌 - 显式指定
pageSize: 500参数,每次请求拉满最大返回条数,减少请求次数 - 新增空值校验逻辑,避免无班级数据时数组调用报错
- 保留原有批量写入表格的逻辑,不会影响写入效率
内容的提问来源于stack exchange,提问作者Retroisbest
相关产品推荐
相关产品推荐

