La IU de Classroom admite cinco tipos de Trabajo en clase: Tareas, Tareas de preguntas, Preguntas de respuesta breve, Preguntas de opción múltiple y Materiales. Actualmente, la API de Classroom admite tres de estos tipos, que se conocen como CourseWorkType
para la API: Tareas, Preguntas de respuesta corta y Preguntas de opción múltiple.
Para acceder a esta funcionalidad, puedes usar el recurso WorkCourse, que representa una tarea o pregunta que se asignó a los alumnos en un curso en particular, incluidos los materiales y detalles adicionales, como la fecha límite o la puntuación máxima.
Además del recurso CourseWork, puedes administrar tareas completadas con el recurso StudentSubmission
. En las siguientes secciones, se describen con más detalle.
Crear tareas
Las tareas solo se pueden crear en nombre de los profesores del curso. Si intentas crear tareas en nombre de un alumno, se mostrará el error 403 PERMISSION_DENIED
. Del mismo modo, los administradores de dominio tampoco pueden crear asignaciones para los cursos que no enseñan, y tratar de hacerlo a través de la API también generará un error 403 PERMISSION_DENIED
.
Cuando creas tareas con el método courses.courseWork.create
, puedes adjuntar vínculos como materials
, como se muestra en el siguiente código de muestra:
Java
Python
El resultado incluye un identificador asignado por el servidor que se puede usar para hacer referencia a la asignación en otras solicitudes a la API.
Para incluir materiales vinculados en una tarea creada con la API de Classroom, usa un recurso de vínculo que especifique la URL de destino. Classroom recupera automáticamente el título y la imagen de la miniatura. La API de Classroom también admite de forma nativa los materiales de Google Drive y YouTube, que se pueden incluir con un recurso de DriveFile o con un recurso de video de YouTube de manera similar.
Para especificar una fecha límite, configura los campos dueDate
y dueTime
en la hora UTC correspondiente. La fecha límite debe ser futura.
Recupera tareas y preguntas
Puedes recuperar tareas y preguntas para alumnos y profesores del curso correspondiente o mediante un administrador de dominio. Para recuperar una tarea o una pregunta específicas, usa courses.courseWork.get. Para recuperar todas las tareas o preguntas (que pueden coincidir de manera opcional con algunos criterios), usa courses.courseWork.list.
El alcance requerido depende de la función que tiene el usuario solicitante en el curso. Si el usuario es alumno, usa uno de los siguientes permisos:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Si el usuario es profesor o administrador de dominio, usa uno de los siguientes alcances:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Tener permiso para recuperar una tarea o una pregunta no implica permisos de acceso a materiales o metadatos de materiales. En la práctica, esto significa que es posible que el administrador no vea el título de un archivo de Drive adjunto si no es miembro del curso. Si deseas permitir que los administradores accedan a los archivos del usuario, consulta la guía sobre delegación de todo el dominio.
Cómo administrar las respuestas de los alumnos
Un recurso StudentSubmission
representa el trabajo y la calificación de un alumno para una tarea o pregunta. Se crea un recurso StudentSubmission
de forma implícita para cada alumno cuando se crea una pregunta o tarea nueva.
En las siguientes secciones, se explican las acciones comunes que administran las respuestas de los alumnos.
Recuperar las respuestas de los alumnos
Los alumnos pueden recuperar sus propias entregas, los profesores pueden recuperar las entregas de todos los alumnos de sus cursos y los administradores del dominio pueden recuperar todas las entregas de todos los alumnos de su dominio. A cada entrega de alumno se le asigna un identificador. Si conoces el identificador, usa courses.courseWork.studentSubmissions.get
para recuperarlo.
Usa el método courses.courseWork.studentSubmissions.list
para obtener recursos StudentSubmission
que coincidan con algunos criterios, como se muestra en el siguiente ejemplo:
Java
Python
Recupera los recursos StudentSubmission
que pertenecen a un alumno en particular especificando el parámetro userId
, como se muestra en el siguiente ejemplo:
Java
Python
Los alumnos se identifican con el ID único o la dirección de correo electrónico del usuario, como lo muestra el SDK de Admin de Google. El usuario actual también puede hacer referencia a su propio ID mediante la abreviatura "me"
.
También es posible recibir entregas de los alumnos para todas las tareas dentro de un curso. Para hacerlo, usa el literal "-"
como courseWorkId
, como se muestra en el siguiente ejemplo:
Java
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
Python
service.courses().courseWork().studentSubmissions().list(
courseId=<course ID or alias>,
courseWorkId='-',
userId=<user ID>).execute()
El alcance requerido depende de la función que tiene el usuario solicitante en el curso. Usa el siguiente alcance si el usuario es profesor o administrador de dominio:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Usa el siguiente permiso si el usuario es alumno:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Tener permiso para recuperar la entrega de un alumno no implica permisos para acceder a los archivos adjuntos o metadatos de los archivos adjuntos. En la práctica, esto significa que es posible que el administrador no vea el título de un archivo de Drive adjunto si no es miembro del curso. Si deseas permitir que los administradores accedan a los archivos del usuario, consulta la guía Delegación de todo el dominio.
Agregar archivos adjuntos a la respuesta de un alumno
Para adjuntar vínculos a las entregas de los alumnos, puedes adjuntar un recurso Link
, DriveFile
o YouTubeVideo
. Para ello, usa courses.courseWork.studentSubmissions.modifyAttachments
, como se muestra en el siguiente ejemplo:
Java
Python
La URL de destino define un archivo adjunto de vínculo; Classroom recuperará automáticamente el título y la imagen de la miniatura. Puedes obtener información sobre los demás materiales en sus respectivas páginas de referencia.
Solo un profesor del curso o el alumno propietario puede modificar StudentSubmission
. Solo puedes adjuntar Materials
si el CourseWorkType
de la entrega del alumno es ASSIGNMENT
.
El alcance requerido depende de la función que tiene el usuario solicitante en el curso. Usa el siguiente alcance si el usuario es profesor:
https://www.googleapis.com/auth/classroom.coursework.students
Usa el siguiente permiso si el usuario es alumno:
https://www.googleapis.com/auth/classroom.coursework.me
Cómo administrar el estado de respuesta de los alumnos
Una respuesta de un alumno puede entregarse, entregarse o devolverse. El campo de estado en StudentSubmission
indica el estado actual. Para cambiar el estado, llama a uno de los siguientes métodos:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Todos estos métodos toman un cuerpo vacío. Ejemplo:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Solo el alumno que posee un StudentSubmission
puede entregarlo o reclamarlo.
Solo se puede reclamar un envío entregado. Los profesores del curso solo pueden mostrar un StudentSubmission
que tenga el estado.
Califica las respuestas de los alumnos
El recurso StudentSubmission
tiene dos campos para almacenar las calificaciones: assignedGrade
, que es la calificación que se informa a los alumnos, y draftGrade
, que es una calificación tentativa que solo pueden ver los profesores. Estos campos se actualizan con courses.courseWork.studentSubmissions.patch
y una máscara de campo que contiene los campos adecuados, como se muestra en el siguiente ejemplo.
Java
Python
studentSubmission = {
'assignedGrade': 99,
'draftGrade': 80
}
service.courses().courseWork().studentSubmissions().patch(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
updateMask='assignedGrade,draftGrade',
body=studentSubmission).execute()
Cuando trabajan con la IU de Classroom, los profesores no pueden asignar una calificación hasta que hayan guardado la calificación preliminar. Luego, la calificación asignada se puede devolver a un alumno. Las aplicaciones deben emular este comportamiento. Tu aplicación puede calificar la tarea de un alumno de dos maneras:
Asigna solo
draftGrade
. Esto es útil, por ejemplo, para permitir que el profesor revise las calificaciones de forma manual antes de finalizarlas. Los alumnos no pueden ver las calificaciones preliminares.Asigna el
draftGrade
y laassignedGrade
para calificar por completo una tarea.
Enumerar las calificaciones asignadas
Puedes enumerar todas las calificaciones de un elemento del curso en particular explorando el objeto de respuesta del método courses.courseWork.studentSubmissions.list
:
Java
Python
response = coursework.studentSubmissions().list(
courseId=course_id,
courseWorkId=coursework_id,
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'))}")