Menetapkan & memperbarui nilai

Panduan ini memberikan contoh kode terkait penilaian untuk Classroom API. Dokumen ini berfokus pada perjalanan penilaian Classroom inti: mengelola status StudentSubmission dan nilai.

Baca Panduan nilai untuk memahami konsep penilaian di Classroom.

Mengelola status StudentSubmission

StudentSubmission dapat dibatalkan pengirimannya, diserahkan, atau dikembalikan. Kolom state menunjukkan status saat ini. Penilaian biasanya dilakukan setelah StudentSubmission berada dalam status TURNED_IN.

Untuk mengubah status menggunakan Classroom API, panggil salah satu metode berikut:

Semua metode ini menerima parameter body kosong, seperti yang ditunjukkan dalam contoh berikut:

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;
}

Menetapkan nilai untuk kiriman siswa

Resource StudentSubmission memiliki dua kolom untuk menyimpan nilai keseluruhan tugas CourseWork yang dinilai:

  • draftGrade adalah nilai sementara yang hanya dapat dilihat oleh pengajar.
  • assignedGrade adalah nilai yang dilaporkan kepada siswa.

Kolom ini diperbarui menggunakan courses.courseWork.studentSubmissions.patch, seperti yang ditunjukkan dalam contoh berikut:

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;

Saat menggunakan UI Classroom, pengajar tidak dapat menetapkan assignedGrade hingga mereka menyimpan draftGrade terlebih dahulu. assignedGrade kemudian dapat dikembalikan kepada siswa. Aplikasi Anda dapat menilai tugas siswa dengan salah satu dari dua cara berikut:

  • Tetapkan hanya draftGrade. Hal ini berguna, misalnya, untuk memungkinkan pengajar meninjau nilai secara manual sebelum memfinalisasinya. Siswa tidak dapat melihat draf nilai.

  • Tetapkan draftGrade dan assignedGrade untuk memberikan nilai lengkap pada tugas.

Gunakan argumen updateMask untuk mengonfigurasi kolom yang akan ditetapkan.

Lihat Menambahkan lampiran ke respons siswa untuk memahami cakupan dan izin yang diperlukan untuk mengubah StudentSubmissions.

Membaca nilai yang ditetapkan

Anda dapat mengakses semua nilai untuk CourseWork tertentu menggunakan metode courses.courseWork.studentSubmissions.list untuk mengambil semua StudentSubmissions yang sesuai dan memeriksa kolom assignedGrade dan draftGrade yang sesuai:

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());
  }
}

Lihat Mengambil respons siswa untuk memahami cakupan dan izin yang diperlukan untuk membaca StudentSubmissions.

Menentukan nilai kursus keseluruhan

Classroom API tidak mengizinkan developer membaca atau menulis nilai keseluruhan kursus, tetapi Anda dapat menghitungnya secara terprogram. Jika Anda ingin menghitung nilai keseluruhan, baca Panduan nilai untuk memahami konsep penting seperti CourseWork yang dibebaskan, periode penilaian, dan berbagai sistem penilaian.

Menilai lampiran add-on

Jika Anda adalah developer add-on Classroom, Anda dapat menetapkan nilai untuk setiap lampiran add-on dan mengonfigurasi nilai agar dapat dilihat oleh pengajar saat mereka meninjau tugas siswa. Lihat panduan Lampiran jenis aktivitas dan Pengiriman kembali nilai untuk mengetahui informasi selengkapnya.

Nilai rubrik

StudentSubmissions memiliki kolom yang merepresentasikan skor yang diberikan berdasarkan Rubrics:

  • draftRubricGrade adalah kumpulan sementara skor Criterion yang hanya dapat dilihat oleh pengajar.
  • assignedRubricGrade adalah kumpulan skor Criterion yang dilaporkan kepada siswa.

Skor rubrik tidak dapat ditetapkan menggunakan Google Classroom API, tetapi dapat dibaca. Lihat Panduan rubrik dan batasan untuk mempelajari lebih lanjut.