如何使用谷歌课堂API获得应有的作业?

问题描述 投票:0回答:1

我正在创建一个Python脚本,它可以获取我在Google Classroom中所有课程中剩下的到期作业数量,但我可以从Google Classroom API获得直接的API调用。

我遵循了官方的谷歌课堂Python文档,但我找不到获得待处理作业的方法。目前我正在使用解决方法。

...
courses = service.courses().courseWork().list(courseId= <my_course_id>).execute()
subm = service.courses().courseWork().studentSubmissions().list(courseId= <my_course_id>, userId='me',courseWorkId='-').execute()

for i in courses['courseWork']:
    for j in subm['studentSubmissions']:
        if i['id'] == j['courseWorkId'] and j['state'] == 'CREATED':
            print(i['title'])

它有效,但我需要每门课程提出 2 个请求,而我有 10 门课程。所以,这对我来说太昂贵了,因为我每 5 分钟调用这个脚本一次。有没有更简单的方法可以拿到

python google-oauth google-classroom
1个回答
0
投票

我认为没有办法绕过发送 2 个请求,但您可以通过仅请求所需的字段(标题)并将

submissionStates[]
过滤器设置为
submissionStates=['CREATED']
来加快速度。它应该会大大加快您的请求速度。

...
courses = service.courses().courseWork().list(courseId= <your_course_id>, fields="title,id").execute()
subm = service.courses().courseWork().studentSubmissions().list(courseId= <your_course_id>, userId='me',courseWorkId='-', fields="studentSubmissions/courseWorkId", submissionStates=["CREATED"]).execute()

for i in courses['courseWork']:
    for j in subm['studentSubmissions']:
        if i['id'] == j['courseWorkId']:
            print(i['title'])

希望有所帮助(代码也可能是错误的,我无法测试它,但我认为你明白这一点)。

© www.soinside.com 2019 - 2024. All rights reserved.