成績の設定と更新

このガイドでは、Classroom API の採点関連のコード例を示します。このドキュメントでは、Classroom の採点の基本的な流れである、StudentSubmission状態 と成績の管理に焦点を当てています。

Classroom の採点のコンセプトについては、成績ガイドをご覧ください。

StudentSubmission の状態を管理する

StudentSubmission は、未提出、提出済み、返却済みのいずれかの状態になります。state フィールドは現在の状態を示します。通常、採点は StudentSubmissionTURNED_IN 状態になった後に行われます。

Classroom API を使用して状態を変更するには、次のいずれかのメソッドを呼び出します。

これらのメソッドはすべて、次の例に示すように、空の body パラメータを受け入れます。

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

生徒の提出物の成績を設定する

StudentSubmission リソースには、 採点済みの CourseWork の総合成績を保存するための 2 つのフィールドがあります。

  • draftGrade は、教師のみが確認できる仮の成績です。
  • assignedGrade は、生徒に通知される成績です。

これらのフィールドは、 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;

Classroom UI を使用する場合、教師は最初に draftGrade を保存するまで assignedGrade を設定できません。その後、assignedGrade を生徒に返却できます。アプリケーションでは、次のいずれかの方法で生徒の課題を採点できます。

  • draftGrade のみを割り当てます。これは、たとえば、教師が成績を確定する前に手動で確認する場合に便利です。生徒は仮成績を確認できません。

  • draftGradeassignedGrade の両方を割り当てて、課題を完全に採点します。

updateMask 引数を使用して、設定するフィールドを構成します。

生徒の回答に添付ファイルを追加するをご覧ください。スコープと権限 については、StudentSubmissionsの変更が必要です。

割り当てられた成績を読み取る

特定の CourseWork のすべての成績にアクセスするには、 courses.courseWork.studentSubmissions.list メソッドを使用して対応する StudentSubmissions をすべて取得し、適切な assignedGrade フィールドと draftGrade フィールドを調べます。

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

生徒の回答を取得するをご覧ください。StudentSubmissionsを読み取るために必要なスコープと権限を理解するためです。

コースの総合成績を決定する

Classroom API では、デベロッパーがコースの総合成績を読み書きすることはできませんが、プログラムで計算できます。総合成績を計算する場合は、成績ガイドを読んで、免責されたCourseWork、採点期間、さまざまな採点システムなどの重要なコンセプトを理解してください。

アドオンの添付ファイルを採点する

Classroom アドオンのデベロッパーは、個々のアドオンの添付ファイルの成績を設定し、教師が生徒の課題を確認するときに成績を表示するように構成できます。詳細については、アクティビティ タイプのアタッチメント成績のパスバック のチュートリアルをご覧ください。

ルーブリックの成績

StudentSubmissions には、 Rubrics に基づいて付けられたスコアを表すフィールドがあります。

  • draftRubricGrade は、教師のみが確認できる仮の Criterion スコアのセットです。
  • assignedRubricGrade は、生徒に通知される Criterion スコアのセットです。

ルーブリックのスコアは Google Classroom API を使用して設定することはできませんが、読み取ることはできます。詳細については、 ルーブリックのガイド制限事項をご覧ください。