首页 > 解决方案 > gcsa - 谷歌日历 API 的 Pythonic 包装器

问题描述

这是我的第一篇文章,我对 python 很陌生,所以如果我的问题/礼仪不够完善,请提前原谅。这可能是一个非常琐碎的问题。

事情是这样的:我正在尝试开发一个应用程序,该应用程序将通过 Google Calendar API 定期检查日历是否有新事件,然后生成一个包含日历 ID 和事件 ID 的二维码。

由于我是 python 新手,所以我搜索了一些可能会使事情变得更顺畅的东西,并找到了 gcsa:https ://github.com/kuzmoyev/google-calendar-simple-api ,它非常好用且方便。

我遇到的问题是使用 gcsa,在日历中列出事件的默认方式仅返回事件时间和名称:

from gcsa.google_calendar import GoogleCalendar

calendar = GoogleCalendar('primary')
for event in calendar:
    print(event)

给我2021-02-16 10:30:00-03:00 - TEST

作为新手,我终其一生都无法找到从事件资源中返回其他数据的方法,例如“id”(我需要)和“状态”(我将用作标志)对于新/旧事件)。

据我了解,有必要稍微调整一下代码,可能在 google_calendar.py 中,也可能在 event_serialyzer.py 中。可能我应该已经注意到了一些非常小的愚蠢的东西。

我什至无法准确指出执行 GoogleCalendar() 的位置以及它从哪里获取显示的数据,但我的猜测可能是 google_calendar.py 中的第 321 行或第 376 行?打败我。

已经围绕这个问题大惊小怪了两天,没有运气,请问有人对此有任何见解吗?

我知道有一些方法可以直接在 python 中请求事件对象,如https://developers.google.com/calendar/v3/reference/events/list#python所示,这将是我的下一个选择。

如果事实证明它太尴尬或不值得麻烦,我将不使用 gcsa 并以通常的方式提出请求。

非常感谢大家!

标签: pythongoogle-apigoogle-calendar-api

解决方案


您的假设gcsa只返回事件的时间并且名称是错误的。使用检查自定义对象print不是很有效率。您将看到的只是对象的字符串表示形式(由其__str__方法决定)。

您应该使用实际的调试器来检查对象,或者至少使用vars(obj)or打印可用的属性dir(obj),或者当然是查看实际的类。

在这种情况下,如果您查看实际的 class,您会发现它包含的不仅仅是开始日期和名称。它还具有(以及其他属性)event_id


推荐阅读