获取 google 课堂作业的学生提交 ID

Get the student´s submission id of a google classroom assignment

我想 return 在 Google Classrom 中使用

作业

service().courseWork().studentSubmissions().return_(courseId=PASS_HERE_THE_COURSEID, courseWorkId=PASS_HERE_THE_COURSEWORDID, id=PASS_HERE_THE_SUBMISSION_ID)

我有 courseId 和 courseWorkId,但不知道如何获取每个学生的 id=PASS_HERE_THE_SUBMISSION_ID。

希望有人能帮助我。

您可以在请求中使用 courses.courseWork.studentSubmissions.list to get a list of student submissions. You just need to provide the courseId and courseWorkId as a path parameter. You may also include additional query parameters

例如,您希望将 returned 学生作品限制为具有指定标识符的学生所拥有的作品。您需要将特定标识符设置为 userId 作为 query parameters

的一部分

Note: You may also loop all the list of student submission to process each submission before returing it using courses.courseWork.studentSubmissions.return

  • 用户的数字标识符
  • 用户的电子邮件地址
  • 字符串文字“我”,表示请求用户

示例响应正文 (JSON):

{
  "studentSubmissions": [
    {
      object (StudentSubmission)
    }
  ],
  "nextPageToken": string
}

StudentSubmission 包含与学生提交课程作业相关的所有信息,包括 courseIdcourseWorkIdiduserId

StudentSubmission 资源 (JSON):

{
  "courseId": string,
  "courseWorkId": string,
  "id": string,
  "userId": string,
  "creationTime": string,
  "updateTime": string,
  "state": enum (SubmissionState),
  "late": boolean,
  "draftGrade": number,
  "assignedGrade": number,
  "alternateLink": string,
  "courseWorkType": enum (CourseWorkType),
  "associatedWithDeveloper": boolean,
  "submissionHistory": [
    {
      object (SubmissionHistory)
    }
  ],

  // Union field content can be only one of the following:
  "assignmentSubmission": {
    object (AssignmentSubmission)
  },
  "shortAnswerSubmission": {
    object (ShortAnswerSubmission)
  },
  "multipleChoiceSubmission": {
    object (MultipleChoiceSubmission)
  }
  // End of list of possible types for union field content.
}

(更新)

关于您在 Apps 脚本中使用 courses.courseWork.studentSubmissions.return 时遇到的错误,

GoogleJsonResponseException: API call to classroom.courses.courseWork.studentSubmissions.return failed with error: @ProjectPermissionDenied The Developer Console project is not permitted to make this request.

发生这种情况是因为您正在尝试修改不是在 Developer Console 项目上创建的课程作业。请参考here.

示例代码:

  var courseId = '2491255xxxxxx';
  var courseWorkId = '2524434xxxxx'; // manually created in classroom.google.com
  
  //1st TRY with error
  var studentSubmissions = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, courseWorkId);
  Logger.log(studentSubmissions.studentSubmissions[0].id);
  //var ret = Classroom.Courses.CourseWork.StudentSubmissions.return({},courseId, courseWorkId, studentSubmissions.studentSubmissions[0].id);
  //Logger.log(ret);



  var assignment =  {
    title: "Test Assignment 3",
    state: "DRAFT",
    assigneeMode: "ALL_STUDENTS",
    workType: "ASSIGNMENT"
  };

  //var newCourseWork = Classroom.Courses.CourseWork.create(assignment, courseId);
  //2nd TRY without error
  var newCourseWorkId = '2618921xxxxx';
  var studentSubmissions2 = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, newCourseWorkId);
  var ret = Classroom.Courses.CourseWork.StudentSubmissions.return({},courseId, newCourseWorkId, studentSubmissions2.studentSubmissions[0].id);
  Logger.log(studentSubmissions2);
  Logger.log(ret);
  
 Logger.log(Classroom.Courses.CourseWork.get(courseId,newCourseWorkId));

解释:

  1. 在第一次尝试中,我尝试 return 学生提交在 https://classroom.google.com/ 中创建的课程作业。这种情况会遇到错误,因为我正在尝试修改与开发人员控制台项目无关的课程作业。您可以使用 Classroom.Courses.CourseWork.get()associatedWithDeveloper 属性 来检查课程作业是否有关联的开发者控制台项目 should be true.

  2. 第二次尝试,我先创建了课程作业草稿,然后在https://classroom.google.com/中修改创建的课程作业。一旦我完成了更改并发布了课程作业。我尝试 return 学生提交课程作业并成功(return 应该是 null/empty)。它成功的原因是因为开发者控制台项目与课程作业相关联,因为我使用 Apps 脚本创建课程作业,因此我也可以使用 Apps 脚本修改学生提交。