【问题标题】:Google Calendar Feed - Only Show Today's EventsGoogle 日历提要 - 仅显示今天的活动
【发布时间】:2009-10-08 13:19:21
【问题描述】:

这是我在 stackoverflow 上的第一篇文章。我的问题是如何更改谷歌日历提要,使其仅自动显示当天的事件?

基本上我想做的是将提要输出到只显示今天事件的网页上。饲料每天都在变化。我之前对其他提要(不是谷歌日历)做过类似的事情,除非在这些情况下,我会输出最新的“#”个帖子。如果我只显示今天的活动,这将行不通。

我在 yahoo 管道上进行了四处搜索,发现了一些它过滤提要的地方,其中包含您必须输入的日期。这有效,除了我希望能够使其自动而不是让某人输入日期。阅读谷歌日历提要api,我也可以做一个日期范围,但这是同样的问题,我必须手动指定范围。有什么方法可以自动执行该操作或其他替代方法吗?

有什么我可以做的 xslt 魔法吗?

感谢您的帮助!

【问题讨论】:

  • 您可以发布您尝试使用的(精简的)提要 XML 吗?在我的 Google 日历提要中,似乎没有实际活动日期的概念。我只有<published><updated> 日期。
  • 你说得对。我也只有 日期。实际事件日期的唯一概念实际上是每个事件条目的内容本身,其中显示:地点:时间:事件状态:等。
  • 这是一个非常糟糕的过滤字段,因为它可能是任何疯狂的格式。我想您可以尝试检索 iCal,对其进行一点解析,找出每个 VEVENT 的 DTSTART、DTEND 和 UID 值,然后将该 UID 与 XML 进行匹配。如果你想实现这一点,我可以编写一些 XSLT 来根据“今天”UID 列表过滤 XML。

标签: xml xslt feed google-calendar-api yahoo-pipes


【解决方案1】:

你可以在Yahoo Pipes:

  1. 从您的 Google 日历中获取 iCal 供稿。 (正如其他人评论的那样,Google 日历提供的 Atom 提要似乎没有以合理的结构化格式包含活动日期。)
  2. 根据 DTSTART/DTEND 值过滤提要。您可以使用Date Builder 模块获取当前日期,只需输入“今天”作为日期即可。

example pipe(仅显示未来 24 小时内开始的事件):

【讨论】:

  • 要获取今天的事件而不是接下来的 24 小时,您可以使用类似 today 00:00 +0300tomorrow 00:00 +0300 作为开始和结束日期,用您自己的时区偏移量代替 +0300
  • 哇,我不知道 Yahoo Pipes 可以处理 iCal。不错,+1。
  • 这是一个很好的答案。我不知道日期构建器模块被允许接受相对日期。不仅如此,我什至不知道有一个日期生成器模块!感谢您帮助我了解有关 Yahoo Pipes 的更多信息。
  • 很棒的答案,除了我的输出也给了我明天的日历条目[我的大部分活动都是重复的,所以你可以看到我的困境]。我通过使用 item.y:dtstart 在今天之前和 item.y:dtend 在昨天之后对其进行了更改以适应我的挑战。像魅力一样工作。
【解决方案2】:

这是由gdata的样本给出的

private static void dateRangeQuery(CalendarService service,
  DateTime startTime, DateTime endTime) throws ServiceException,
  IOException {
CalendarQuery myQuery = new CalendarQuery(eventFeedUrl);
myQuery.setMinimumStartTime(startTime);
myQuery.setMaximumStartTime(endTime);

// Send the request and receive the response:
CalendarEventFeed resultFeed = service.query(myQuery,
    CalendarEventFeed.class);

System.out.println("Events from " + startTime.toString() + " to "
    + endTime.toString() + ":");
System.out.println();
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEventEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println();

}

我认为您可以将 minitime 和 maxtime 设置为同一天?

【讨论】:

    【解决方案3】:

    您所做的是为 atom 提要设置 url 参数—— start-min 设置为今天,start-max 设置为明天——此外,请注意,您需要进行身份验证才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多