谷歌日历 Gdata 旧的重复事件已删除事件仍显示 EventID 以 Z 结尾

Posted

技术标签:

【中文标题】谷歌日历 Gdata 旧的重复事件已删除事件仍显示 EventID 以 Z 结尾【英文标题】:Google Calendar Gdata old recurring event deleted event still showing with a EventID ending in Z 【发布时间】:2012-03-13 18:57:42 【问题描述】:

我尝试用谷歌搜索这个问题,但没有运气,可能是由于搜索字符串“Z”不够具体。

背景: 使用 Google Calendar Zend gdata 库,并一直使用简单的代码列出特定时间段的事件。在这种情况下,从 27-02-2012 到 03-03-2012。 我列出了许多单一事件,其中有一个重复事件,标题为“Rob”,每周一至周五。 我使用的是基本代码,没有任何花哨的添加。然而:)

问题: 当我使用$query->setSingleEvents(TRUE) 参数时,一切都按预期工作,并显示了正确的事件。

当我谈到“显示”事件时,我说的是使用 Zend gdata 显示日历事件的 php 页面。 在所有情况下,Google 日历 GUI 都显示正确的数据(即,“Rob”事件未显示,因为它已被删除。

但是当我将其设置为FALSE 时,重复事件“Rob”应该具有要分组的开始时间,但是,一些额外的随机事件显示为没有starttime,只是一样标题。即使我删除了重复事件,它仍然会显示在 gdata 返回的数据中。

有趣的观察 已删除但仍显示在页面上的事件的 EventID 以“Z”结尾。 它具有通常的 eventID,后跟:_20120302T030000Z

我的问题 此活动已在 Google 日历 GUI 中删除。为什么gdata还显示一个被删除的事件,以时间戳和Z结尾的eventid是什么意思。

解决尝试: 1. 尝试将其从重复事件更改为正常事件(删除“所有系列事件的重复事件” 没有运气,仍然列出了额外的。 2. 完全删除所有系列事件的重复事件。 这在SingleEvents(TRUE) 中再次显示了正确的结果,但在FALSE 中,旧的“Rob”事件仍然显示,当它已从日历中完全删除时。

代码:

function outputCalendarByDateRange($client, $startDate='2012-02-27',
                                   $endDate='2012-03-03')

  $gdataCal = new Zend_Gdata_Calendar($client);
  $query = $gdataCal->newEventQuery();
  $query->setUser('default');
  $query->setVisibility('private');
  $query->setProjection('full');
  $query->setOrderby('starttime');
  $query->setStartMin($startDate);
  $query->setStartMax($endDate);
  $query->setSingleEvents(FALSE);
  $eventFeed = $gdataCal->getCalendarEventFeed($query);

  foreach ($eventFeed as $event) 
    echo "Title: " . $event->title->text . "<br />";
    echo "Event ID: " . $event->id->text . "<br />";
    foreach ($event->when as $when) 
      echo "Start: " . $when->startTime . "<br />";
    
    echo "<br />";
  

【问题讨论】:

您是否尝试过检查事件状态,就像这里一样?:***.com/questions/2584978/… 听起来好像正在缓存某些东西...... 【参考方案1】:

这是我在docs 中找到的:

36.5.6. 删除事件可以通过调用日历服务的 delete() 方法并提供编辑来删除日历事件 事件的 URL 或通过调用现有事件自己的 delete() 方法。

在任何一种情况下,已删除的事件仍会显示在用户的 如果提供了 updateMin 查询参数,则为私有事件提要。 删除的事件可以与常规事件区分开来,因为它们 将把他们的 eventStatus 属性设置为 “http://schemas.google.com/g/2005#event.canceled”

您在解析提要时似乎必须测试事件状态。

顺便说一句,时间戳分解为

年:2012 日:03 月:02 时间:T 时:分:秒 03:00:00 zulu:Z

祖鲁语与 GMT(格林威治标准时间)或 UTC(通用时间代码)相同

【讨论】:

只是说,我再也没有回过头来感​​谢大家的回复。很久以前,我什至不记得我是如何解决这个问题的。此外,我不知道这些回复的原因是因为我没有勾选框,说通过电子邮件向我发送对我的电子邮件帐户的任何回复。无论如何,我不喜欢寻求帮助,然后没有跟进,所以道歉!

以上是关于谷歌日历 Gdata 旧的重复事件已删除事件仍显示 EventID 以 Z 结尾的主要内容,如果未能解决你的问题,请参考以下文章

python 使用Google日历事件在网页上显示,使用gdata库

日历中的重复事件 - Rails

谷歌日历不显示添加事件的提醒

如何发布谷歌日历的动态事件源?

使用 Nodejs 的服务帐户在谷歌日历中插入事件

如何从 Caldav 客户端为 iCloud 日历删除重复的事件条目