在谷歌课堂上列出学生的作业问题。

问题描述 投票:0回答:1

我开始使用Classroom API来增强我们学校的本地应用程序。为了制作一个班级的报告,我想列出所有学生的作业和成绩。我使用循环来查看一个学生的所有课程,然后是每门课程的所有课程作业,然后是每门课程作业的所有提交。这是我使用的代码。

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, optionalArgs2)来获取所选学生的提交信息时, 循环到达一个没有分配给该学生的课程作业时, 调用失败并出现错误 "classroom.Courses.CourseWork.studentSubmissions.list; error: '我可以在调用API函数之前,在循环中检查课件是否没有分配给该学生,或者使用try...catch子句来捕获可能的错误,但我想知道是否有更聪明的解决方案来解决这个问题。

RegardsRafael

submission google-classroom
1个回答
0
投票

遗憾的是,API没有给你一个端点来直接列出某个学生的所有作业提交。

然而,你并不是一个人有这样的问题,已经有了一个。功能要求 在Google的公共问题追踪器上,这个功能。

我建议你给它一颗 "星",以提高知名度。

同时,你确实需要实现一个 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);
   ...
   }
© www.soinside.com 2019 - 2024. All rights reserved.