如何使用 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)

而且如果赋值的次数非常多,可能需要使用pageTokennextPageToken,循环调用这个方法

使用适当的范围:

如果您使用 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

参考: