Установить & обновить оценки

В этом руководстве представлены примеры кода, связанные с выставлением оценок, для API Classroom. Основное внимание в этом документе уделяется базовому процессу выставления оценок в Classroom: управлению состояниями и оценками, StudentSubmission .

Ознакомьтесь с руководством по выставлению оценок , чтобы понять основные принципы оценивания в Classroom.

Управление состояниями отправки студентами материалов

StudentSubmission может быть отменена, сдана или возвращена. Поле state указывает на текущее состояние. Оценка обычно производится после того, как StudentSubmission перейдет в состояние TURNED_IN .

Чтобы изменить состояние с помощью API Classroom, вызовите один из следующих методов:

  • courses.courseWork.studentSubmissions.turnIn : Только студент, которому принадлежит StudentSubmission может её сдать.
  • courses.courseWork.studentSubmissions.reclaim : Только студент, которому принадлежит StudentSubmission может отозвать её. Отзыв работы возможен только в том случае, если она уже была сдана.
  • courses.courseWork.studentSubmissions.return : Только преподаватели курса могут возвращать StudentSubmission . Работа может быть возвращена только в том случае, если она уже была отправлена ​​студентом.

Все эти методы принимают пустой параметр 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 работы:

  • 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 преподаватели не могут установить assignedGrade пока не сохранят draftGrade . После этого assignedGrade может быть возвращена ученику. Ваше приложение может оценивать задания ученика одним из двух способов:

  • Назначьте только draftGrade . Это полезно, например, чтобы преподаватель мог вручную проверить оценки перед их окончательным утверждением. Студенты не смогут видеть черновые оценки.

  • Для полной оценки задания необходимо присвоить значения draftGrade и assignedGrade .

Используйте аргумент 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 .

Определить общую оценку за курс.

API Classroom не позволяет разработчикам читать или записывать общую оценку за курс, но вы можете рассчитать ее программно. Если вы хотите рассчитать общую оценку, ознакомьтесь с руководством по оценкам, чтобы понять важные понятия, такие как освобожденные CourseWork , периоды выставления оценок и различные системы оценивания.

Дополнительные приспособления для выравнивания грунта

Если вы являетесь разработчиком дополнений для Classroom, вы можете устанавливать оценки для отдельных вложений и настраивать отображение оценок для учителей при проверке работ учащихся. Дополнительную информацию см. в пошаговых инструкциях по вложениям типа «Задания» и передаче оценок .

Критерии оценки

В полях, отображающих оценки, выставленные на основе Rubrics StudentSubmissions

  • draftRubricGrade — это предварительный набор оценок Criterion , видимый только преподавателям.
  • assignedRubricGrade — это набор оценок Criterion , которые сообщаются студентам.

Оценки по критериям нельзя установить с помощью API Google Classroom, но их можно прочитать. Подробнее см. в руководстве по критериям и ограничениям .