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

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

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

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

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

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

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

Все эти методы принимают пустой параметр body , как показано в следующем примере:

Питон

service.courses().courseWork().studentSubmission().turnIn(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    body={}).execute()

Ява

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 , как показано в следующем примере:

Питон

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

Ява

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 :

Питон

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'))}")

Ява

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, вы можете устанавливать оценки для отдельных вложений надстроек и настроить отображение оценок преподавателям при проверке работ учащихся. Подробнее см. в разделах «Вложения-активности» и «Обратная передача оценок» .

Рубрики оценок

StudentSubmissions есть поля, в которых представлены баллы, выставленные на основе Rubrics :

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

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