Đặt và cập nhật điểm

Hướng dẫn này cung cấp các ví dụ về mã liên quan đến việc chấm điểm cho Classroom API. Tài liệu này tập trung vào quy trình chấm điểm cốt lõi của Lớp học: quản lý trạng thái StudentSubmission và điểm số.

Đọc Hướng dẫn về điểm số để làm quen với các khái niệm về chấm điểm trong Lớp học.

Quản lý trạng thái StudentSubmission

StudentSubmission có thể được huỷ nộp, nộp hoặc trả lại. Trường state cho biết trạng thái hiện tại. Việc chấm điểm thường được thực hiện sau khi StudentSubmission ở trạng thái TURNED_IN.

Để thay đổi trạng thái bằng API Lớp học, hãy gọi một trong các phương thức sau:

Tất cả các phương thức này đều chấp nhận một tham số body trống, như minh hoạ trong ví dụ sau:

Python

service.courses().courseWork().studentSubmission().turnIn(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    body={}).execute()

Java

classroom/snippets/src/main/java/ReturnStudentSubmission.java
try {
  service
      .courses()
      .courseWork()
      .studentSubmissions()
      .classroomReturn(courseId, courseWorkId, id, null)
      .execute();
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}

Chấm điểm cho bài nộp của học viên

Tài nguyên StudentSubmission có 2 trường để lưu trữ tổng điểm cho bài tập CourseWork được chấm điểm:

  • draftGrade là điểm dự kiến và chỉ giáo viên mới nhìn thấy.
  • assignedGrade là điểm được báo cáo cho học viên.

Các trường này được cập nhật bằng courses.courseWork.studentSubmissions.patch, như minh hoạ trong ví dụ sau:

Python

studentSubmission = {
  'assignedGrade': 99,
  'draftGrade': 80
}

service.courses().courseWork().studentSubmissions().patch(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    updateMask='assignedGrade,draftGrade',
    body=studentSubmission).execute()

Java

classroom/snippets/src/main/java/PatchStudentSubmission.java
StudentSubmission studentSubmission = null;
try {
  // Updating the draftGrade and assignedGrade fields for the specific student submission.
  StudentSubmission content =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .get(courseId, courseWorkId, id)
          .execute();
  content.setAssignedGrade(90.00);
  content.setDraftGrade(80.00);

  // The updated studentSubmission object is returned with the new draftGrade and assignedGrade.
  studentSubmission =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .patch(courseId, courseWorkId, id, content)
          .set("updateMask", "draftGrade,assignedGrade")
          .execute();

  /* Prints the updated student submission. */
  System.out.printf(
      "Updated student submission draft grade (%s) and assigned grade (%s).\n",
      studentSubmission.getDraftGrade(), studentSubmission.getAssignedGrade());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return studentSubmission;

Khi làm việc với giao diện người dùng Lớp học, giáo viên không thể đặt assignedGrade cho đến khi họ lưu draftGrade. Sau đó, bạn có thể trả lại assignedGrade cho học viên. Ứng dụng của bạn có thể chấm điểm bài tập của học viên theo một trong hai cách:

  • Chỉ định draftGrade. Ví dụ: điều này hữu ích khi giáo viên muốn xem xét điểm theo cách thủ công trước khi hoàn tất. Học viên không thể xem điểm nháp.

  • Chỉ định cả draftGradeassignedGrade để chấm điểm đầy đủ cho bài tập.

Dùng đối số updateMask để định cấu hình trường cần đặt.

Xem phần Thêm tệp đính kèm vào câu trả lời của học viên để tìm hiểu các phạm vi và quyền cần thiết để sửa đổi StudentSubmissions.

Đọc điểm được giao

Bạn có thể truy cập vào tất cả điểm số cho một CourseWork cụ thể bằng cách sử dụng phương thức courses.courseWork.studentSubmissions.list để truy xuất tất cả StudentSubmissions tương ứng và kiểm tra các trường assignedGradedraftGrade thích hợp:

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    # optionally include `pageSize` to restrict the number of student
    # submissions included in the response.
    pageSize=10
).execute()
submissions.extend(response.get('studentSubmissions', []))

if not submissions:
    print('No student submissions found.')

print('Student Submissions:')

for submission in submissions:
    print(f"Submitted at:"
          f"{(submission.get('userId'), submission.get('assignedGrade'))}")

Java

classroom/snippets/src/main/java/ListStudentSubmissions.java
  ListStudentSubmissionsResponse response =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .list(courseId, courseWorkId)
          .setPageToken(pageToken)
          .execute();

  /* Ensure that the response is not null before retrieving data from it to avoid errors. */
  if (response.getStudentSubmissions() != null) {
    studentSubmissions.addAll(response.getStudentSubmissions());
    pageToken = response.getNextPageToken();
  }
} while (pageToken != null);

if (studentSubmissions.isEmpty()) {
  System.out.println("No student submissions found.");
} else {
  for (StudentSubmission submission : studentSubmissions) {
    System.out.printf(
        "User ID %s, Assigned grade: %s\n",
        submission.getUserId(), submission.getAssignedGrade());
  }
}

Hãy xem phần Truy xuất câu trả lời của học viên để tìm hiểu các phạm vi và quyền cần thiết để đọc StudentSubmissions.

Xác định tổng điểm của khoá học

Classroom API không cho phép nhà phát triển đọc hoặc ghi điểm tổng thể của khoá học, nhưng bạn có thể tính điểm này theo phương thức lập trình. Nếu bạn muốn tính điểm tổng kết, hãy đọc Hướng dẫn về điểm số để hiểu các khái niệm quan trọng như CourseWork được miễn, khoảng thời gian chấm điểm và các hệ thống chấm điểm khác nhau.

Tệp đính kèm của tiện ích bổ sung chấm điểm

Nếu là nhà phát triển tiện ích bổ sung Lớp học, bạn có thể đặt điểm cho từng tệp đính kèm tiện ích bổ sung và định cấu hình để giáo viên có thể xem điểm khi họ xem xét bài tập của học viên. Hãy xem hướng dẫn về Tệp đính kèm theo loại hoạt độngTính năng trả điểm để biết thêm thông tin.

Điểm theo tiêu chí chấm điểm

StudentSubmissions có các trường đại diện cho điểm số được đưa ra dựa trên Rubrics:

  • draftRubricGrade là một bộ điểm số Criterion dự kiến mà chỉ giáo viên mới có thể xem.
  • assignedRubricGrade là tập hợp điểm số Criterion được báo cáo cho học viên.

Bạn không thể đặt điểm trong bảng điểm bằng Google Classroom API, nhưng có thể đọc điểm. Hãy xem hướng dẫn về bảng điểmcác điểm hạn chế để tìm hiểu thêm.