Search code examples
google-apps-scriptgoogle-sheetsgoogle-classroom

Google Classroom - List all classes


I have a function to list all of my google classes but its only returning 500 results, how do i implement paging to allow a complete list to be generated?

   function listCourses() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.getSheetByName('Classes');
      var response = Classroom.Courses.list();
      var courses = response.courses;
      var arr=[];//You could put column headers in here
      for (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]); 
      }
      sh.getRange(2, 1, arr.length, arr[0].length).setValues(arr);   
    }

Thanks


Solution

  • In your situation, how about using pageToken? When your script is modified, it becomes as follows.

    Modified script:

    function listCourses() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.getSheetByName('Classes');
      var arr = [];
      var pageToken = "";
      do {
        var response = Classroom.Courses.list({pageToken});
        var courses = response.courses;
        arr = arr.concat(courses.map(({id, name, section, courseState, guardiansEnabled}) => [id, name, section, courseState, guardiansEnabled]));
        pageToken = response.nextPageToken;
      } while (pageToken);
      sh.getRange(2, 1, arr.length, arr[0].length).setValues(arr);
    }
    

    Reference: