如何使用 Python 从 Google 课堂获取作业标题
How to get the assignment title from Google Classroom with Python
我想获取教师在 Google 课堂中的特定课程中发布的每个作业的作业标题。有人可以帮我弄这个吗?当我在官方网站上尝试 API 资源管理器时,它 returns 是正确的结果,但它不适用于我的 python 文件。
service = build('classroom', 'v1', credentials=creds)
# Call the Classroom API
results = service.courses().courseWork().get(courseId).execute()
courses = results.get('courses')
if not courses:
print('No courses found.')
else:
print('Courses:')
for course in courses:
print(course)
为了访问课程作业,您必须在提供的示例代码中编辑预定义的 SCOPE
(同时删除 token.pickle 文件)。
检查 this,以便更好地理解。
虽然您已经接受了答案,但我认为与您有相同问题的其他人可能无法基于此解决他们的问题。因此,我也发布了一个答案。
为“get”方法使用正确的参数:
您没有具体说明您遇到了哪个具体问题/遇到了什么错误(您只是说 it doesn't work
),但是您分享的代码不正确:
如果要使用courses.courseWork.get,至少要提供两个参数,for courseId
和for id
(指assignment id),所以应该是像这样:
service.courses().courseWork().get(courseId=courseId, id=courseWorkId).execute()
使用“list”而不是“get”:
但由于您想要获取课程中所有作业的作业标题(而不是单个作业),您应该改用 courses.courseWork.list。您的代码应该是这样的(其中 title
是每个作业的标题):
courseWorkList = service.courses().courseWork().list(courseId=courseId).execute()
for courseWork in courseWorkList["courseWork"]:
title = courseWork["title"]
print(title)
而且如果赋值的次数非常多,可能需要使用pageToken
和nextPageToken,循环调用这个方法
使用适当的范围:
如果您使用 list
,则需要指定 these scopes 中的任何一个。否则,您无权访问此资源:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.students
https://www.googleapis.com/auth/classroom.coursework.me
参考:
我想获取教师在 Google 课堂中的特定课程中发布的每个作业的作业标题。有人可以帮我弄这个吗?当我在官方网站上尝试 API 资源管理器时,它 returns 是正确的结果,但它不适用于我的 python 文件。
service = build('classroom', 'v1', credentials=creds)
# Call the Classroom API
results = service.courses().courseWork().get(courseId).execute()
courses = results.get('courses')
if not courses:
print('No courses found.')
else:
print('Courses:')
for course in courses:
print(course)
为了访问课程作业,您必须在提供的示例代码中编辑预定义的 SCOPE
(同时删除 token.pickle 文件)。
检查 this,以便更好地理解。
虽然您已经接受了答案,但我认为与您有相同问题的其他人可能无法基于此解决他们的问题。因此,我也发布了一个答案。
为“get”方法使用正确的参数:
您没有具体说明您遇到了哪个具体问题/遇到了什么错误(您只是说 it doesn't work
),但是您分享的代码不正确:
如果要使用courses.courseWork.get,至少要提供两个参数,for courseId
和for id
(指assignment id),所以应该是像这样:
service.courses().courseWork().get(courseId=courseId, id=courseWorkId).execute()
使用“list”而不是“get”:
但由于您想要获取课程中所有作业的作业标题(而不是单个作业),您应该改用 courses.courseWork.list。您的代码应该是这样的(其中 title
是每个作业的标题):
courseWorkList = service.courses().courseWork().list(courseId=courseId).execute()
for courseWork in courseWorkList["courseWork"]:
title = courseWork["title"]
print(title)
而且如果赋值的次数非常多,可能需要使用pageToken
和nextPageToken,循环调用这个方法
使用适当的范围:
如果您使用 list
,则需要指定 these scopes 中的任何一个。否则,您无权访问此资源:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.students
https://www.googleapis.com/auth/classroom.coursework.me