【问题标题】:Get the student´s submission id of a google classroom assignment获取学生提交的 google 课堂作业的 id
【发布时间】:2021-01-27 17:14:38
【问题描述】:

我想在 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。

希望有人可以帮助我。

【问题讨论】:

    标签: google-classroom


    【解决方案1】:

    您可以使用courses.courseWork.studentSubmissions.list 获取student submissions 的列表。您只需提供courseIdcourseWorkId 作为path parameter。您还可以在请求中添加额外的query parameters

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

    注意:您还可以循环所有学生提交的列表以处理每个提交,然后再使用courses.courseWork.studentSubmissions.return 进行返回

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

    示例响应正文 (JSON):

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

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

    学生提交资源 (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 Script 中使用courses.courseWork.studentSubmissions.return 时遇到的错误,

    GoogleJsonResponseException:对教室.courses.courseWork.studentSubmissions.return 的 API 调用失败并出现错误:@ProjectPermissionDenied 开发者控制台项目不允许发出此请求。

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

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

    【讨论】:

    • 谢谢你,罗恩!我会尽量听从你的指示。 ?
    • 如果您遇到一些问题,请告诉我。如果这项工作可以随意接受或支持答案作为对他人的参考。谢谢
    • 谢谢,罗恩!我在脚本中使用了这一行来获取一个学生提交 id:Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, courseWorkId).studentSubmissions[0].id;正如你所建议的,我可以得到它。但是现在我想使用这个 id 来返回分配,并且有一个我不明白的参数。上面写着 return(ReturnStudentSubmissionRequest resource, String courseId, String courseWorkId, String id) 除了 ReturnStudentSubmissionRequest 资源,我什么都有了 你知道这是什么意思吗?
    • 我不确定您当前使用的是哪种编程语言,但如果您的库需要 ReturnStudentSubmissionRequest resource 参数,这与请求正文有关。基于courses.courseWork.studentSubmissions.return 请求正文应该为空,您可以声明一个空的resource 变量类似于resource = {}
    • 嗨@Ron 我的脚本使用 Google Apps 脚本编辑器非常简单。 function returnAssignment() { var resource = {}; Classroom.Courses.CourseWork.StudentSubmissions.return(resource, '77627855704', '150547015058', 'Cg4IpoHnnqMEEJLLtOqwBA'); } 错误是这个 GoogleJsonResponseException: La llamada de la API aclassic.courses.courseWork.studentSubmissions.return falló con el 错误:@ProjectPermissionDenied 不允许开发者控制台项目提出此请求。
    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多