Ustalanie i aktualizowanie ocen

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

Zapoznaj się z przewodnikiem po ocenach, aby poznać koncepcje oceniania w Classroom.

Zarządzanie stanami StudentSubmission

StudentSubmission można cofnąć, oddać lub zwrócić. Pole state wskazuje bieżący stan. Ocenianie zwykle odbywa się 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, co widać 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 projekty

Zasób StudentSubmission ma 2 pola do przechowywania ogólnej oceny za ocenione zadanie CourseWork:

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

Te pola są aktualizowane za pomocą elementu 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 korzystania z interfejsu Classroom nauczyciele nie mogą ustawić assignedGrade, dopóki nie zapiszą draftGrade. assignedGrade można zwrócić uczniowi. Aplikacja może ocenić projekt ucznia na 2 sposoby:

  • Przypisz tylko draftGrade. Jest to przydatne np. w sytuacji, gdy nauczyciel chce ręcznie sprawdzić oceny przed ich zatwierdzeniem. Uczniowie nie widzą ocen w wersji roboczej.

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

Za pomocą argumentu updateMask możesz skonfigurować pole, które ma zostać ustawione.

Więcej informacji o zakresach i uprawnieniach wymaganych do modyfikowania StudentSubmissions znajdziesz w artykule Dodawanie załączników do odpowiedzi ucznia.

odczytywać przypisane oceny,

Aby uzyskać dostęp do wszystkich ocen dla danego CourseWork, użyj metody courses.courseWork.studentSubmissions.list, aby pobrać wszystkie odpowiednie StudentSubmissions, i sprawdź odpowiednie pola assignedGradedraftGrade:

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

Więcej informacji o zakresach i uprawnieniach wymaganych do odczytywania StudentSubmissions znajdziesz w artykule Pobieranie odpowiedzi uczniów.

Określanie ogólnych ocen kursu

Interfejs Classroom API nie umożliwia deweloperom odczytywania ani zapisywania ogólnej oceny kursu, ale można ją obliczyć programowo. Jeśli chcesz obliczyć ogólną ocenę, przeczytaj przewodnik po ocenach, aby poznać ważne pojęcia, takie jak zwolnienie z oceny CourseWork, okresy oceniania i różne systemy oceniania.

Ocenianie załączników dodatku

Jeśli jesteś deweloperem dodatków do Classroom, możesz ustawiać oceny poszczególnych załączników dodatków i konfigurować je tak, aby były widoczne dla nauczycieli podczas sprawdzania prac uczniów. Więcej informacji znajdziesz w przewodnikach Załączniki typu aktywnościPrzekazywanie ocen.

Oceny cząstkowe

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

  • draftRubricGrade to tymczasowy zestaw Criterion ocen widoczny tylko dla nauczycieli.
  • assignedRubricGrade to zestaw wyników Criterion przekazywanych uczniom.

Ocen nie można ustawiać za pomocą interfejsu Google Classroom API, ale można je odczytywać. Więcej informacji znajdziesz w przewodniku po rubrykach i ograniczeniach.