【发布时间】:2020-08-11 22:44:12
【问题描述】:
我开始使用 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;错误:未找到请求的实体。 如果在调用 API 函数之前未将课程作业分配给该学生,或者可能使用 try..catch 子句捕获可能的错误,我可以通过检查循环来解决它,但我想知道是否有更聪明的方法解决这个问题。
问候 拉斐尔
【问题讨论】:
-
您要检索仅分配给特定学生的作业还是同时检索分配给整个班级的作业?
-
就我而言,我正在寻找一名学生。为了检索课堂报告,我将使用该功能为每个学生制作一份单独的报告。
标签: submission google-classroom