Проблема с перечислением заданий учащегося в Google Classroom - PullRequest
0 голосов
/ 28 апреля 2020

Я начинаю использовать Classroom API для улучшения локальных приложений в нашей школе. Чтобы составить отчет для класса, я хочу перечислить все ученические задания и оценки. Я использую циклы для go по всем курсам для студента, затем все курсовые работы для каждого курса, а затем все материалы для каждой курсовой работы. Вот фрагмент кода, который я использую:

function fListWorkStudent(idStudent)
{
  // Variables 
  var pageToken = null;
  var optionalArgs =
  {
    pageToken: pageToken,
    courseStates: 'ACTIVE',
    studentId: idStudent,
    pageSize: 0
  };
  var optionalArgs2 =
  {
    pageToken: pageToken,
    userId: idStudent,
    pageSize: 0
  };

  // Courses for a student
  var response = Classroom.Courses.list(optionalArgs);
  var sCourses = response.courses;
  if (sCourses.length === 0)
    Logger.log("No courses");
  else 
  {
    for (course in sCourses)
    {
      var idCourse=sCourses[course].id;
      var nomprof=getUserName(sCourses[course].ownerId);

      // Coursework for every course
      var responseW = Classroom.Courses.CourseWork.list(idCourse);
      var works = responseW.courseWork;
      if (works && (works.length > 0))
      {
        for work in works)
        {
          var idWork=works[work].id;

          // Submissions for every coursework
          var responseS = Classroom.Courses.CourseWork.StudentSubmissions.list(idCourse, idWork, optionalArgs2);
          var submissions = responseS.studentSubmissions;
          if (submissions && submissions.length >0)
          {
            for (submission in submissions)
            {
              // Prepare report here
            }
          }
        }
      }
    }
  }
}

Проблема с этим кодом заключается в том, что когда я вызываю Classroom.Courses.CourseWork.StudentSubmissions.list (idCourse, idWork, optionArgs2), чтобы отфильтровать представления выбранного студента, и l oop достигает курсовой работы, не назначенной этому студенту, вызов завершается с ошибкой 'classroom.courses.courseWork.studentSubmissions.list; ошибка: запрошенная сущность не найдена. ' Я мог бы решить эту проблему, проверив в l oop, не назначена ли курсовая работа этому студенту перед вызовом функции API, или, возможно, используя предложение try..catch для обнаружения возможной ошибки, но я хотел бы знать, есть ли является более разумным решением этой проблемы.

С уважением, Рафаэль

1 Ответ

0 голосов
/ 28 апреля 2020

К сожалению, API не дает вам конечной точки для непосредственного перечисления всех назначений / работ данного учащегося

Однако вы не одиноки с этой проблемой, уже есть запрос функции для этой функции в Google Publi c Issue Tracker.

Я рекомендую вам дать ему «звездочку», чтобы увеличить видимость.

В то же время вам действительно нужно либо реализовать оператор try...catch, либо условное выражение, что-то вроде:


 if(works[work].assigneeMode == "ALL_STUDENTS" || (works[work].assigneeMode == "INDIVIDUAL_STUDENTS" && works[work].individualStudentsOptions.studentIds.indexOf(idStudent)!=-1))
  {
   var responseS = Classroom.Courses.CourseWork.StudentSubmissions.list(idCourse, idWork, optionalArgs2);
   ...
   }
...