Menetapkan & memperbarui nilai

Panduan ini memberikan contoh kode terkait penilaian untuk Google Classroom API. Baca Panduan nilai untuk memahami konsep penilaian di Classroom.

Menetapkan nilai untuk kiriman siswa

Resource StudentSubmission memiliki dua kolom untuk menyimpan nilai: assignedGrade, yang merupakan nilai yang dilaporkan kepada siswa, dan draftGrade, yang merupakan nilai sementara yang hanya dapat dilihat oleh pengajar. Kolom ini diperbarui menggunakan courses.courseWork.studentSubmissions.patch.

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 memberikan nilai hingga mereka menyimpan draf nilai terlebih dahulu. Nilai yang ditetapkan kemudian dapat dikembalikan kepada siswa. Aplikasi Anda dapat menilai tugas siswa dengan salah satu dari dua cara berikut:

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

  • Tetapkan draftGrade dan assignedGrade untuk menilai tugas sepenuhnya.

Membaca nilai yang ditetapkan

Anda dapat mencantumkan semua nilai untuk item tugas kursus tertentu dengan menjelajahi objek respons metode courses.courseWork.studentSubmissions.list:

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    pageSize=10 # optionally include `pageSize` to restrict the number of student submissions included in the response.
).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());
  }
}

Menentukan nilai kursus secara keseluruhan

Classroom API tidak mengizinkan developer membaca atau menulis nilai kursus secara keseluruhan, tetapi Anda dapat menghitungnya secara terprogram. Artikel pusat bantuan Menyiapkan penilaian memberikan tips tentang penghitungan ini. Resource Course mencakup kolom gradebookSettings yang dapat membantu Anda melakukan penghitungan.

Jika Anda ingin menghitung nilai keseluruhan, baca beberapa petunjuk yang perlu diketahui saat mengelola tugas yang terlambat, dibebaskan, dan tidak diserahkan.

Mengelola status respons siswa

Jawaban siswa mungkin dibatalkan pengirimannya, diserahkan, atau dikembalikan. Kolom status di StudentSubmission menunjukkan status saat ini. Untuk mengubah status, panggil salah satu metode berikut:

Semua metode ini menerima parameter body kosong, misalnya:

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

Nilai 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 Pemberian nilai untuk mengetahui informasi selengkapnya.