A IU do Google Sala de Aula é compatível com cinco tipos de Atividades: Atividades,
Atividades com teste, Perguntas de 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
: Atividades, perguntas de resposta curta e perguntas de múltipla escolha.
Para acessar essa funcionalidade, use o recurso CourseWork, que representa uma atividade ou pergunta atribuída aos alunos em um curso específico, incluindo materiais e detalhes adicionais, como data de entrega ou pontuação máxima.
Além do recurso WorkWork, é possível gerenciar as tarefas concluídas
com o recurso StudentSubmission
. As seções a seguir os descrevem
mais detalhadamente.
Criar atividades
As atividades podem ser criadas apenas em nome dos professores do curso.
Se você tentar criar tarefas em um curso em nome de um aluno, o resultado será um erro
PERMISSION_DENIED
403. Da mesma forma, os administradores de domínios também não podem criar
atribuições para cursos que não ensinam, e a tentativa de fazer isso por meio da API
também resultará em um erro PERMISSION_DENIED
403.
Ao criar atribuições usando o método courses.courseWork.create
, você
pode anexar links como materials
, mostrados 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 de API.
Para incluir materiais vinculados em uma atividade criada pela API Classroom, use um recurso de 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 é compatível nativamente com materiais do Google Drive e do YouTube, que podem ser incluídos em um recurso DriveFile ou recurso de vídeo do YouTube 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 entrega precisa estar no futuro.
Recuperar atividades e perguntas
Você pode recuperar tarefas e perguntas para alunos e professores do curso correspondente ou por um administrador do domínio. Para recuperar uma atividade ou pergunta específica, use courses.courseWork.get. Para recuperar todas as atividades ou perguntas (opcionalmente correspondente a alguns critérios), use courses.courseWork.list.
O escopo necessário depende do papel que o usuário solicitante tem no curso. Se o usuário for 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 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ões para acessar materiais ou metadados do material. Na prática, isso significa que um administrador pode não ver o título de um arquivo do Drive anexado se não for membro do curso. Para permitir que os administradores acessem os arquivos de usuário, consulte o guia sobre delegação em todo o domínio.
Gerenciar as respostas dos estudantes
Um recurso StudentSubmission
representa o trabalho feito 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 envios, os professores podem recuperar os envios de todos os estudantes nos cursos, e os administradores do domínio podem recuperar todos os envios de todos os alunos no domínio. Cada identificador de aluno 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 ver os recursos do StudentSubmission
que correspondem 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 exclusivo ou endereço de e-mail 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 estudantes para todas as atividades 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 do papel que o usuário solicitante tem no curso. Use o escopo a seguir se o usuário for um professor ou administrador de domínio:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
Use este escopo se o usuário for estudante:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
A permissão para recuperar o envio de um estudante não implica permissões para acessar anexos ou metadados de anexo. Na prática, isso significa que um administrador pode não ver 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 de delegação em todo o domínio.
Adicionar anexos à resposta de um estudante
É possível anexar links a um envio de um estudante anexando 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. Saiba mais sobre os outros materiais nas respectivas páginas de referência.
O StudentSubmission
só pode ser modificado pelo professor ou pelo aluno que é proprietário dele. Você só poderá anexar Materials
se a CourseWorkType
do envio do estudante for ASSIGNMENT
.
O escopo necessário depende do papel que o usuário solicitante tem no curso. Use este escopo se o usuário for um professor:
https://www.googleapis.com/auth/classroom.coursework.students
Use este escopo se o usuário for estudante:
https://www.googleapis.com/auth/classroom.coursework.me
Gerenciar o estado da resposta do estudante
A resposta de um estudante pode ser cancelada, entregue ou devolvida. O campo de 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 usam um corpo vazio. Exemplo:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
Somente o estudante que é proprietário do StudentSubmission
poderá entregá-lo ou recuperá-lo.
Somente um envio pode ser reivindicado. Os professores do curso só podem retornar um
StudentSubmission
que esteja no estado entregue.
Dar nota às respostas dos estudantes
O recurso StudentSubmission
tem dois campos para armazenar notas:
assignedGrade
, que é a nota informada aos alunos, e draftGrade
,
que é uma nota temporária visível apenas para 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 a seguir:
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 uma nota depois de salvar uma nota temporária. A nota atribuída pode ser devolvida a um 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 manualmente as notas antes de finalizá-las. Os estudantes não podem ver as notas temporárias.Atribua
draftGrade
eassignedGrade
para avaliar totalmente uma atividade.
Listar as 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'))}")