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

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

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

Управление состояниями StudentSubmission

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

Чтобы изменить состояние с помощью 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()

Ява

класс/фрагменты/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()

Ява

класс/фрагменты/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;

При работе с пользовательским интерфейсом Класса учителя не могут установить 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'))}")

Ява

класс/фрагменты/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 , периоды выставления оценок и различные системы оценок.

Дополнительные вложения для оценок

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

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

StudentSubmissions имеет поля, которые представляют оценки, полученные на основе Rubrics :

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

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