Cómo establecer y actualizar las calificaciones

En esta guía, se proporcionan ejemplos de código relacionados con la calificación para la API de Classroom. El objetivo de este documento es el proceso de calificación principal de Classroom: administrar las calificaciones y los estados de StudentSubmission.

Lee la Guía de calificaciones para familiarizarte con los conceptos de calificación en Classroom.

Administra los estados de StudentSubmission

StudentSubmission puede estar sin entregar, entregado o devuelto. El campo state indica el estado actual. Por lo general, la calificación se realiza después de que StudentSubmission está en el estado TURNED_IN.

Para cambiar el estado con la API de Classroom, llama a uno de los siguientes métodos:

Todos estos métodos aceptan un parámetro body vacío, como se muestra en el siguiente ejemplo:

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

Cómo establecer calificaciones para las entregas de los estudiantes

El recurso StudentSubmission tiene dos campos para almacenar la calificación general de las tareas CourseWork calificadas:

  • draftGrade es una calificación provisional que solo pueden ver los profesores.
  • assignedGrade es la calificación que se informa a los estudiantes.

Estos campos se actualizan con courses.courseWork.studentSubmissions.patch, como se muestra en el siguiente ejemplo:

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;

Cuando trabajan con la IU de Classroom, los profesores no pueden configurar un assignedGrade hasta que primero guarden un draftGrade. Luego, se puede devolver el assignedGrade a un estudiante. Tu aplicación puede calificar la tarea de un estudiante de una de las siguientes maneras:

  • Asigna solo el draftGrade. Esto es útil, por ejemplo, para permitir que el profesor revise las calificaciones de forma manual antes de finalizarlas. Los estudiantes no pueden ver las calificaciones de borrador.

  • Asigna draftGrade y assignedGrade para calificar una tarea por completo.

Usa el argumento updateMask para configurar qué campo establecer.

Consulta Cómo agregar archivos adjuntos a una respuesta de un alumno para comprender los permisos y los niveles de acceso necesarios para modificar StudentSubmissions.

Cómo leer las calificaciones asignadas

Puedes acceder a todas las calificaciones de un CourseWork en particular con el método courses.courseWork.studentSubmissions.list para recuperar todos los StudentSubmissions correspondientes y, luego, inspeccionar los campos assignedGrade y draftGrade adecuados:

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

Consulta Cómo recuperar las respuestas de los estudiantes para comprender los permisos y los alcances necesarios para leer StudentSubmissions.

Determina las calificaciones generales del curso

La API de Classroom no permite que los desarrolladores lean ni escriban la calificación general del curso, pero puedes calcularla de forma programática. Si quieres calcular la calificación general, lee la Guía de calificaciones para comprender conceptos importantes, como las CourseWork justificadas, los períodos de calificación y los diferentes sistemas de calificación.

Archivos adjuntos de complementos de calificación

Si eres desarrollador de complementos de Classroom, puedes establecer calificaciones para archivos adjuntos de complementos individuales y configurar la calificación para que los profesores la vean cuando revisen el trabajo de los estudiantes. Consulta las explicaciones sobre Adjuntos de tipo de actividad y Paso de calificación para obtener más información.

Calificaciones de rúbricas

StudentSubmissions tiene campos que representan las puntuaciones que se otorgan en función de Rubrics:

  • draftRubricGrade es un conjunto tentativo de calificaciones de Criterion que solo los profesores pueden ver.
  • assignedRubricGrade es el conjunto de puntuaciones de Criterion que se informa a los estudiantes.

Las calificaciones de las rúbricas no se pueden establecer con la API de Google Classroom, pero sí se pueden leer. Consulta la guía de rúbricas y las limitaciones para obtener más información.