Ustalanie i aktualizowanie ocen

Ten przewodnik zawiera przykłady kodu związane z ocenianiem w interfejsie Classroom API. Skupiamy się w nim na podstawowym procesie oceniania w Classroom: zarządzaniu StudentSubmission stanami i ocenami.

Aby zapoznać się z pojęciami związanymi z ocenianiem w Classroom, przeczytaj przewodnik Oceny.

Zarządzanie stanami StudentSubmission

StudentSubmission może być nieprzesłany, oddany lub zwrócony. Pole state wskazuje bieżący stan. Ocenianie odbywa się zwykle po tym, jak StudentSubmission osiągnie stan TURNED_IN.

Aby zmienić stan za pomocą interfejsu Classroom API, wywołaj jedną z tych metod:

Wszystkie te metody akceptują pusty parametr body, jak pokazano w tym przykładzie:

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

Ustawianie ocen za przesłane przez uczniów prace

Zasób StudentSubmission ma 2 pola do przechowywania ogólnej oceny za ocenianą pracę CourseWork:

  • draftGrade to ocena tymczasowa widoczna tylko dla nauczycieli.
  • assignedGrade to ocena zgłoszona uczniom.

Te pola są aktualizowane za pomocą courses.courseWork.studentSubmissions.patch, jak pokazano w tym przykładzie:

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;

Podczas pracy z interfejsem Classroom nauczyciele nie mogą ustawić assignedGrade, dopóki nie zapiszą draftGrade. Następnie assignedGrade można zwrócić uczniowi. Aplikacja może ocenić projekt ucznia na 2 sposoby:

  • Przypisz tylko draftGrade. Jest to przydatne np. do umożliwienia nauczycielowi ręcznego sprawdzenia ocen przed ich ostatecznym zatwierdzeniem. Uczniowie nie widzą ocen roboczych.

  • Przypisz zarówno draftGrade, jak i assignedGrade, aby w pełni ocenić projekt.

Aby skonfigurować pole do ustawienia, użyj argumentu updateMask.

Aby dowiedzieć się więcej o zakresach i uprawnieniach wymaganych do modyfikowania StudentSubmissions, przeczytaj artykuł Dodawanie załączników do odpowiedzi ucznia.

Odczytywanie przypisanych ocen

Aby uzyskać dostęp do wszystkich ocen za konkretną CourseWork, użyj metody courses.courseWork.studentSubmissions.list, aby pobrać wszystkie odpowiednie StudentSubmissions i sprawdzić odpowiednie assignedGrade i draftGrade pola:

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

Aby dowiedzieć się więcej o zakresach i uprawnieniach wymaganych do odczytywania StudentSubmissions, przeczytaj artykuł Pobieranie odpowiedzi uczniów.

Określanie ogólnych ocen kursu

Interfejs Classroom API nie pozwala deweloperom odczytywać ani zapisywać ogólnej oceny kursu, ale można ją obliczyć programowo. Jeśli chcesz obliczyć ocenę ogólną, przeczytaj przewodnik Oceny, aby poznać ważne pojęcia, takie jak usprawiedliwiona CourseWork, okresy oceniania i różne systemy oceniania.

Ocenianie załączników dodatków

Jeśli jesteś deweloperem dodatków do Classroom, możesz ustawiać oceny poszczególnych załączników dodatków i skonfigurować widoczność oceny dla nauczycieli podczas sprawdzania zadań uczniów. Więcej informacji znajdziesz w przewodnikach Załączniki typu aktywności i Przekazywanie ocen.

Oceny cząstkowe

StudentSubmissions mają pola, które reprezentują wyniki uzyskane na podstawie Rubrics:

  • draftRubricGrade to tymczasowy zestaw wyników Criterion widoczny tylko dla nauczycieli.
  • assignedRubricGrade to zestaw Criterion wyników zgłoszonych uczniom.

Wyników kryteriów oceny nie można ustawić za pomocą interfejsu Google Classroom API, ale można je odczytać. Więcej informacji znajdziesz w przewodniku Oceny cząstkowe i w sekcji Ograniczenia.