【问题标题】:Google Calendar sync with database谷歌日历与数据库同步
【发布时间】:2015-07-13 19:22:34
【问题描述】:

我正在使用 google calendar api v2,目前正在寻找一种将谷歌日历与本地应用程序/数据库同步的方法(使用 C#,数据正在存储SQL Compact 数据库中)。我这样做是因为我的目标是创建一个在 Internet 连接丢失后仍然可以运行的应用程序(因此需要将数据存储在本地)。在应用程序级别查询和更新事件工作正常,但是我遇到了几个问题:

1)查询谷歌日历中是否仍然存在事件(存储在数据库中):

我当前的系统或多或少可以正常工作。对于存储在数据库中的每个日历事件,我针对该特定“键”(大约 26 个字符串)运行针对谷歌日历的查询 - 如果没有返回任何内容,则该事件必须不再存在。但这会导致两个问题;首先是对每个日历事件进行单独查询的成本很高,并且对于较大的日历并不是很有用。第二个问当地事件。我最好的猜测是 google 开始返回 null 可能是因为我发送了太多请求 - 尽管我不能确定这一点。

编辑:我已经使用entry.Status 解决了这个问题。如果一个事件被取消,它会返回 url: http://schemas.google.com/g/2005#event.canceled

使用它,您可以检测在 google 方面哪些事件已被删除。

2) 查询谷歌日历上的事件修改日期:

目前,如果我想查询在某个日期之后被修改的事件,我将以下行添加到我的查询中:

query.ExtraParameters="orderby=startime&sortorder=ascending&updated-min=" + date;

这将返回自提供日期以来修改的所有日历事件,但是,据我所知,似乎没有任何方法可以检索事件的实际修改日期。至少,不是在 v2 中。这个对吗?如果是这样,我还能如何做到这一点?

我遇到的问题要么是因为 google calendar api 的功能有限,要么是文档中没有足够的信息。

如果有人能就这些问题提供任何见解,那将不胜感激。

【问题讨论】:

标签: c# google-calendar-api


【解决方案1】:

感谢以上内容 - 它帮助我根据修改后的日期取回已编辑的约会。返回时,我们得到如下修改日期 - 希望这就是您的意思/之后:

EventFeed calFeed = service.Query(query) as EventFeed;

while (calFeed != null && calFeed.Entries.Count > 0) {
    foreach(EventEntry entry in calFeed.Entries) {
        DateTime modified = entry.Edited.DateValue;
    }
}

【讨论】:

  • 非常感谢您的回答。这对我帮助很大。欢迎使用 Stack Overflow!
猜你喜欢
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 2017-10-12
  • 2011-01-31
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多