更改订阅日历中事件的颜色时禁止响应 403

我正在尝试根据 Google 日历活动的位置更改其颜色。我想要更改的事件是带有网络呼叫链接的同步日历的一部分。我无法单独更改每个事件的颜色,但我可以设置日历的颜色。


以下代码允许我更改另一个非同步日历(我自己创建的)的各个事件的颜色,但对于同步日历,我收到错误403: Forbidden。 HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/calendars/CALENDAR_ID/events/EVENT_ID?alt=json returned "Forbidden">


from apiclient.discovery import build

from google_auth_oauthlib.flow import InstalledAppFlow


scopes = ['https://www.googleapis.com/auth/calendar']

flow = InstalledAppFlow.from_client_secrets_file("client_secret.json", scopes=scopes)

credentials = flow.run_console()


service = build("calendar", "v3", credentials=credentials)



calId = "my_calendar_id"

calendar = service.events().list(calendarId=calId).execute()



keyword = "my_location_keyword"

for event in calendar['items']: 

# I navigate through each event of the specified calendar

    if 'location' in event and event['location'].find(keyword): 

    # if the location exists and contains the keyword, then i change the color

        service.events().patch(calendarId=calId, eventId=event['id'], body={"colorId":10}).execute()


有没有办法改变颜色而不触发禁止的错误?在我看来,颜色不应该受到授权保护......


我考虑过将日历复制到我有写入权限的另一个日历中,并更改新日历上的颜色,但这似乎有点矫枉过正。还有更好的主意吗?


有只小跳蛙
浏览 135回答 1
1回答

千万里不及你

回答:该Code: 403  Message: Forbidden错误表明尝试编辑日历事件的帐户没有日历的编辑权限。您必须在日历共享设置中更改此设置。更多信息:与个人共享日历有四个选项,如日历 UI 中所示:除非个人拥有Make changes to events或Make changes and manage sharing访问日历,否则Forbidden将收到此响应。笔记:根据处理日历 API 错误的文档:403:非组织者禁止事件更新请求正在尝试在不属于组织者的副本中设置共享事件属性之一。共享属性(例如guestsCanInviteOthers、guestsCanModify或guestsCanSeeOtherGuests)只能由组织者设置。虽然此错误的详细信息似乎与您描述的简单得多的错误不同403: Forbidden,但这可能是由于 API 更改所致。如果您尝试更改此处指定的属性之一(guestsCanModify例如 ),而没有上述日历共享设置,则会返回相同的、更简单的 403 错误:{ "error": {  "errors": [   {    "domain": "global",    "reason": "forbidden",    "message": "Forbidden"   }  ],  "code": 403,  "message": "Forbidden" }}因此,建议您检查日历的共享设置,因为如果colorId没有正确设置,非组织者的用户将无法编辑日历。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python