Đặ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 API Lớp học. Tài liệu này tập trung vào hành trình chấm điểm cốt lõi trong Lớp học: quản lý trạng thái và điểm StudentSubmission.

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

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

StudentSubmission có thể được huỷ gửi, 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 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;
}

Đặt điểm cho bài nộp của học viên

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

  • draftGrade là điểm dự kiến mà 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 cách sử dụ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 của Lớp học, giáo viên không thể đặt assignedGrade cho đến khi họ lưu draftGrade trước. Sau đó, bạn có thể trả về 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 sau:

  • Chỉ gán draftGrade. Ví dụ: tính năng này hữu ích khi cho phép giáo viên xem xét điểm số 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 một bài tập.

Sử dụng đối số updateMask để định cấu hình trường cần đặt.

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

Đọc điểm đã chỉ định

Bạn có thể truy cập vào tất cả điểm 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 điểm tổng thể của khoá học

API Lớp học 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 đó theo phương thức lập trình. Nếu bạn muốn tính điểm tổng thể, hãy đọc kỹ Hướng dẫn về điểm để hiểu các khái niệm quan trọng như CourseWork được miễn, giai đoạn 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 Điểm

Nếu là nhà phát triển tiện ích bổ sung cho Lớp học, bạn có thể đặt điểm cho từng tệp đính kèm của tiện ích bổ sung và định cấu hình điểm để giáo viên có thể xem khi họ xem bài tập của học viên. Hãy xem hướng dẫn về Tệp đính kèm thuộc loại Hoạt độngChuyển đ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 tập hợp điểm Criterion dự kiến chỉ giáo viên mới nhìn thấy.
  • assignedRubricGrade là tập hợp điểm Criterion được báo cáo cho học viên.

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