【问题标题】:How to get the assignment title from Google Classroom with Python如何使用 Python 从 Google Classroom 获取作业标题
【发布时间】:2020-10-10 05:47:55
【问题描述】:

我想获取教师在 Google 课堂的特定课程中发布的每项作业的作业标题。有人可以帮我弄这个吗?当我在官方网站上尝试 API Explorer 时,它返回了正确的结果,但它不适用于我的 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)

【问题讨论】:

  • 我猜你的意思是使用list 而不是get

标签: python python-3.x google-classroom


【解决方案1】:

虽然您已经接受了答案,但我认为其他有相同问题的人可能无法基于此解决他们的问题。因此,我也发布了答案。

为“get”方法使用正确的参数:

您没有具体说明您遇到的具体问题/遇到了什么错误(您只是说it doesn't work),但您分享的代码不正确:

如果要使用courses.courseWork.get,至少要提供两个参数,courseIdid(指赋值id),所以应该是这样的:

service.courses().courseWork().get(courseId=courseId, id=courseWorkId).execute()

使用“列表”而不是“获取”:

但由于您想获取课程中所有作业的作业标题(而不是单个作业),您应该改用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

参考:

【讨论】:

    【解决方案2】:

    为了访问课程作业,您必须在提供的示例代码中编辑预定义的SCOPE(并删除 token.pickle 文件)。
    检查this,以获得更好的理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 2016-05-20
      • 2019-05-14
      相关资源
      最近更新 更多