如何通过Google Calendar API获取仅Microsoft Teams插件创建的事件列表
获取Google Calendar中仅Microsoft Teams插件创建的事件
核心思路:先识别Teams事件的专属标记,再通过API筛选
Microsoft Teams插件创建的事件自带几个可用来区分的特征,你可以基于这些特征来过滤:
1. 找对Teams事件的识别点
- 创建者邮箱:这类事件的
creator.email基本都是teams-calendar@microsoft.com(少数情况可能是no-reply@teams.microsoft.com,建议先拉几个测试事件确认) - 来源标识:事件的
source字段里,title会明确写着Microsoft Teams,对应的url也是Teams会议的链接 - 扩展属性:部分事件的
extendedProperties.shared或private里会有microsoftTeamsMeetingId这类专属字段,不过需要API权限足够才能拿到
2. 用Google Calendar API实现筛选
因为API的filter参数不支持直接按creator邮箱过滤,所以最靠谱的方式是先拉取目标日历的事件,再在本地筛选:
示例代码(Python)
from googleapiclient.discovery import build # 先初始化API服务(确保已完成OAuth授权,拿到credentials) service = build('calendar', 'v3', credentials=creds) # 拉取指定时间范围内的所有事件(可根据需求调整timeMin/timeMax) events_response = service.events().list( calendarId='primary', # 替换成你的目标日历ID,primary是主日历 timeMin='2024-01-01T00:00:00Z', singleEvents=True, orderBy='startTime' ).execute() all_events = events_response.get('items', []) # 筛选Teams创建的事件(用creator邮箱判断) teams_only_events = [ event for event in all_events if 'creator' in event and event['creator'].get('email') == 'teams-calendar@microsoft.com' ] # 或者用source字段筛选 # teams_only_events = [ # event for event in all_events # if 'source' in event and event['source'].get('title') == 'Microsoft Teams' # ]
3. 注意事项
- 权限要够:API凭据需要
https://www.googleapis.com/auth/calendar.readonly权限(只读足够,要是需要修改就用更高权限) - 分页处理:如果日历里事件很多,记得用
pageToken分页拉取,避免单次请求数据量过大超时 - 特殊情况:如果遇到少数creator邮箱不一样的Teams事件,可以结合source字段一起过滤,提高准确率
内容的提问来源于stack exchange,提问作者Rinky
相关产品推荐
相关产品推荐

