You need to enable JavaScript to run this app. Python调用Google Classroom API的Announcement.list()报错问询
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Google Classroom API的Announcement.list()报错问询

功能需求与异常场景
  • 需求目标:获取任课教师在Google Classroom平台发布的对应课程的最新公告列表
  • 运行异常:执行相关代码时持续触发TypeError报错,报错提示界面标注有TypeError字样
  • 原始实现代码:
from googleapiclient.discovery import build
from fetch import Fetch


get_credit = Fetch()
credit = get_credit() #my credentials

service = build('classroom', 'v1', credentials=credit)
get_data = service.courses()
soup = get_data.list().execute()

data = soup['courses']

name_course = [name['name'] for name in data] #name of the course
course_id = [id['id'] for id in data] #course ID

announcement = get_data.announcements()
announcement_data = announcement.list(course_id[0], page_token=10).execute()
print(announcement_data)
  
报错触发的核心原因
  • 子资源调用链路错误:get_data是service.courses()生成的课程资源集合实例,本身不存在announcements子资源方法,正确的链式调用链路为service.courses().announcements()。
  • 接口参数传值规则错误:announcements.list()方法要求课程ID必须通过courseId命名关键字参数传入,直接将课程ID作为位置参数传入会触发参数校验失败。
  • 参数类型不匹配:page_token字段要求传入字符串类型的分页标识,传入整数10直接触发类型校验,抛出TypeError。
修正后的可运行代码
from googleapiclient.discovery import build
from fetch import Fetch

# 初始化身份凭证与服务实例
get_credit = Fetch()
credit = get_credit()
service = build('classroom', 'v1', credentials=credit)

# 拉取关联课程列表,空值兜底避免KeyError
courses_resp = service.courses().list().execute()
courses = courses_resp.get('courses', [])

# 提取课程名称与对应课程ID
name_course = [course['name'] for course in courses]
course_id = [course['id'] for course in courses]

# 拉取指定课程的最新10条公告
announcement_data = service.courses().announcements().list(
    courseId=course_id[0],
    pageSize=10,
    orderBy='updateTime desc'
).execute()

print(announcement_data)
实现优化说明
  • 替换错误的page_token=10参数为pageSize=10:前者是分页用的字符串标识,后者是数值类型的单页返回条数控制参数,二者不可混用。
  • 新增orderBy='updateTime desc'参数:接口会直接按公告更新时间倒序返回,拿到的结果就是最新在前的公告列表,不需要额外做二次排序。
  • 读取课程列表字段时增加空值兜底:使用.get('courses', [])的写法,当账号下无关联课程时不会直接抛出KeyError。
  • 首次请求不需要携带pageToken:只有上次接口返回了nextPageToken字段时,才需要把该字段值原样传入,拉取对应分页的内容。

内容的提问来源于stack exchange,提问作者frankgomez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 02:45:04