成績の設定と更新

このガイドでは、Classroom API の採点関連のコード例を示します。このドキュメントでは、StudentSubmission の状態と成績の管理という、Classroom の採点プロセスの中心となる部分に焦点を当てています。

成績ガイドを読んで、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、成績期間、さまざまな成績システムなどの重要な概念を理解してください。

Grade アドオンの添付ファイル

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

ルーブリックの成績

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

  • draftRubricGrade は、教師のみに表示される Criterion スコアの暫定的なセットです。
  • assignedRubricGrade は、生徒に報告された Criterion スコアのセットです。

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