You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:27:05