Definir e atualizar notas

Este guia oferece exemplos de código relacionados à avaliação para a API Classroom. O foco deste documento é a jornada de avaliação principal do Google Sala de Aula: gerenciar estados e notas do StudentSubmission.

Leia o guia de notas para se familiarizar com os conceitos de avaliação na Sala de Aula.

Gerenciar estados de "StudentSubmission"

O StudentSubmission pode ser cancelado, entregue ou devolvido. O campo state indica o estado atual. A avaliação geralmente é feita depois que a StudentSubmission está no estado TURNED_IN.

Para mudar o estado usando a API Classroom, chame um dos seguintes métodos:

Todos esses métodos aceitam um parâmetro body vazio, mostrado no exemplo a seguir:

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

Definir notas para trabalhos enviados pelos estudantes

O recurso StudentSubmission tem dois campos para armazenar a nota geral do trabalho CourseWork avaliado:

  • draftGrade é uma nota provisória visível apenas para professores.
  • assignedGrade é a nota informada aos estudantes.

Esses campos são atualizados usando courses.courseWork.studentSubmissions.patch, conforme demonstrado no exemplo abaixo:

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;

Ao trabalhar com a interface do Google Sala de Aula, os professores não podem definir uma assignedGrade até salvar uma draftGrade. O assignedGrade pode ser devolvido a um estudante. Seu app pode avaliar a atividade de um estudante de duas maneiras:

  • Atribua apenas o draftGrade. Isso é útil, por exemplo, para permitir que o professor revise manualmente as notas antes de finalizá-las. Os estudantes não podem ver as notas de rascunho.

  • Atribua draftGrade e assignedGrade para avaliar uma atividade.

Use o argumento updateMask para configurar qual campo definir.

Consulte Adicionar anexos a uma resposta do estudante para entender os escopos e as permissões necessárias para modificar StudentSubmissions.

Ler as notas atribuídas

É possível acessar todas as notas de uma CourseWork específica usando o método courses.courseWork.studentSubmissions.list para recuperar todas as StudentSubmissions correspondentes e inspecionar os campos assignedGrade e draftGrade apropriados:

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

Consulte Recuperar respostas dos estudantes para entender os escopos e as permissões necessárias para ler StudentSubmissions.

Determinar as notas gerais do curso

A API Classroom não permite que os desenvolvedores leiam ou gravem a nota geral do curso, mas você pode calcular isso de maneira programática. Se você quiser calcular a nota geral, leia o guia de notas para entender conceitos importantes, como CourseWork dispensado, períodos de avaliação e os diferentes sistemas de avaliação.

Grade anexos de complemento

Se você é um desenvolvedor de complementos do Google Sala de Aula, pode definir notas para anexos de complementos individuais e configurar a nota para ficar visível para os professores quando eles revisarem o trabalho dos estudantes. Consulte os tutoriais de Anexos de atividades e Retorno de notas para mais informações.

Notas de rubricas

StudentSubmissions tem campos que representam as pontuações dadas com base em Rubrics:

  • draftRubricGrade é um conjunto provisório de notas Criterion que só podem ser vistas pelos professores.
  • assignedRubricGrade é o conjunto de notas Criterion informadas aos alunos.

As notas da rubrica não podem ser definidas usando a API Google Sala de Aula, mas podem ser lidas. Consulte o guia de rubricas e as limitações para saber mais.