A IU do Google Sala de Aula é compatível com cinco tipos de atividades: "Atividades",
"Atividades com teste", "Perguntas para resposta curta", "Perguntas de múltipla escolha" e
Materiais. Atualmente, a API Classroom oferece suporte a três desses tipos, que
são conhecidos como CourseWorkType
na API: Atividades, Perguntas de resposta curta
e Perguntas de múltipla escolha.
Para acessar essa funcionalidade, use o recurso CourseWork, que representa uma tarefa ou pergunta atribuída aos alunos de um curso específico, incluindo todos os materiais e detalhes adicionais, como data de entrega ou pontuação máxima.
Além do recurso CourseWork, você pode gerenciar atividades concluídas
com o recurso StudentSubmission
. As seções abaixo descrevem isso
em mais detalhes.
Criar atividades
As atividades só podem ser criadas em nome dos professores do curso, e
tentar criar atividades em um curso em nome de um estudante resulta
em um erro 403 PERMISSION_DENIED
. Da mesma forma, os administradores de domínio também não podem criar
atribuições para cursos que não ensinam e tentar fazer isso pela API
também resultará em um erro 403 PERMISSION_DENIED
.
Ao criar atividades usando o método courses.courseWork.create
, você
pode anexar links como materials
, mostrado no exemplo de código abaixo:
Java
Python
O resultado inclui um identificador atribuído pelo servidor que pode ser usado para fazer referência à atribuição em outras solicitações da API.
Para incluir materiais vinculados em uma atividade criada na API Classroom, use o recurso Link, especificando o URL de destino. O Google Sala de Aula busca automaticamente o título e a imagem em miniatura. A API Classroom também oferece suporte nativo aos materiais do Google Drive e do YouTube, que podem ser incluídos com um recurso DriveFile ou YouTubeVideo de maneira semelhante.
Para especificar uma data de conclusão, defina os campos dueDate
e dueTime
como o horário UTC correspondente. A data de conclusão precisa estar no futuro.
Recuperar atividades e perguntas
É possível recuperar atividades e perguntas para alunos e professores do curso correspondente ou por um administrador de domínio. Para recuperar uma atividade ou pergunta específica, use cursos.courseWork.get. Para recuperar todas as atividades ou perguntas (opcionalmente corresponder a alguns critérios), use courses.courseWork.list.
O escopo necessário depende da função que o usuário solicitante tem no curso. Se o usuário for um estudante, use um dos seguintes escopos:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Se o usuário for um professor ou um administrador de domínio, use um dos seguintes escopos:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Ter permissão para recuperar uma atividade ou pergunta não implica permissão para acessar materiais ou metadados do material. Na prática, isso significa que um administrador talvez não veja o título de um arquivo do Drive anexado se não for membro do curso. Se você quer permitir que os administradores acessem arquivos de usuários, consulte o guia delegação em todo o domínio.
Gerenciar as respostas dos estudantes
Um recurso StudentSubmission
representa o trabalho realizado e a nota de um estudante em uma atividade ou
pergunta. Um recurso StudentSubmission
é criado implicitamente para cada estudante quando uma nova pergunta ou
atividade é criada.
As seções a seguir explicam as ações comuns que gerenciam as respostas dos estudantes.
Recuperar as respostas dos estudantes
Os estudantes podem recuperar os próprios envios, os professores podem recuperar os envios
de todos os estudantes dos cursos e os administradores do domínio podem recuperar todos
os envios de todos os estudantes no domínio. Cada envio de estudante recebe um identificador. Se você souber o identificador, use
courses.courseWork.studentSubmissions.get
para recuperá-lo.
Use o método courses.courseWork.studentSubmissions.list
para receber
recursos StudentSubmission
que correspondam a alguns critérios, conforme mostrado no
exemplo a seguir:
Java
Python
Recupere recursos StudentSubmission
que pertencem a um aluno específico
especificando o parâmetro userId
, conforme mostrado no exemplo a seguir:
Java
Python
Os estudantes são identificados pelo ID ou endereço de e-mail exclusivo do usuário, conforme
retornado pelo SDK Admin do Google. O usuário atual também pode se referir ao próprio
ID usando a abreviação "me"
.
Também é possível receber os envios dos alunos para todas as tarefas de um curso. Para fazer isso, use o "-"
literal como courseWorkId
, conforme mostrado no
exemplo a seguir:
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()
O escopo necessário depende da função que o usuário solicitante tem no curso. Use o escopo a seguir se o usuário for um professor ou um administrador do domínio:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Use o escopo a seguir se o usuário for um estudante:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
Ter permissão para recuperar os envios de um estudante não implica permissão para acessar anexos ou metadados de anexos. Na prática, isso significa que um administrador talvez não veja o título de um arquivo do Drive anexado se não for membro do curso. Se você quiser permitir que os administradores acessem os arquivos do usuário, consulte o guia delegação em todo o domínio.
Adicionar anexos a uma resposta de estudante
Para anexar links ao envio de um estudante, anexe um recurso Link
, DriveFile
ou YouTubeVideo
. Isso é feito com
courses.courseWork.studentSubmissions.modifyAttachments
, conforme mostrado no
exemplo a seguir:
Java
Python
Um anexo de link é definido pelo URL de destino. O Google Sala de Aula vai buscar automaticamente o título e a imagem em miniatura. Você pode aprender sobre os outros materiais nas respectivas páginas de referência.
O StudentSubmission
só pode ser modificado pelo professor do curso ou pelo
aluno proprietário dele. Você só pode anexar Materials
se
CourseWorkType
do envio do estudante for ASSIGNMENT
.
O escopo necessário depende da função que o usuário solicitante tem no curso. Use o escopo a seguir se o usuário for um professor:
https://www.googleapis.com/auth/classroom.coursework.students
Use o escopo a seguir se o usuário for um estudante:
https://www.googleapis.com/auth/classroom.coursework.me
Gerenciar o estado de resposta do estudante
A resposta de um estudante pode ser cancelada, entregue ou devolvida. O campo do estado
em StudentSubmission
indica o estado atual. Para mudar o estado, chame
um dos seguintes métodos:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
Todos esses métodos têm um corpo vazio. Exemplos
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Só o estudante que é o proprietário de uma StudentSubmission
pode entregá-la ou recuperá-la.
Apenas envios entregues podem ser reivindicados. Os professores do curso só podem retornar uma
StudentSubmission
que esteja no estado "entregue".
Avaliar as respostas dos estudantes
O recurso StudentSubmission
tem dois campos para armazenar notas:
assignedGrade
, que é a nota informada aos estudantes, e draftGrade
,
que é uma nota provisória visível apenas para os professores. Esses campos são atualizados
usando courses.courseWork.studentSubmissions.patch
com uma máscara de campo
contendo os campos apropriados, conforme mostrado no exemplo abaixo.
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()
Ao trabalhar com a IU do Google Sala de Aula, os professores só podem atribuir notas depois de salvarem uma nota temporária. A nota atribuída pode ser devolvida para o estudante. Os aplicativos precisam emular esse comportamento. Seu aplicativo pode avaliar a atividade de um estudante de duas maneiras:
Atribua apenas a
draftGrade
. Isso é útil, por exemplo, para permitir que o professor revise as notas manualmente antes de finalizá-las. Os alunos não podem ver as notas temporárias.Atribua a
draftGrade
e aassignedGrade
para atribuir nota total a uma atividade.
Listar notas atribuídas
É possível listar todas as notas de um determinado item do curso explorando o objeto de resposta do 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'))}")