成績の設定と更新

このガイドでは、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 を生徒に返却できます。アプリケーションは、次の 2 つの方法のいずれかで生徒の課題を採点できます。

  • 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 を使用して設定することはできませんが、読み取ることはできます。詳しくは、評価基準ガイド制限事項をご覧ください。