来自iCal供稿网址的事件在Google日历中显示为“忙碌”

时间:2011-11-08 15:16:11

标签: calendar google-calendar-api icalendar

我正在尝试查看我的系统在Google日历中生成的格式化日历Feed。我是通过Google日历的“其他日历”下拉菜单中的“按网址添加”功能,并将URL提供给动态生成的网络文件。

Google日历会成功读取Feed中的事件并创建日历,但所有事件都显示为“忙碌”,除了事件发生时间之外没有任何详细信息(摘要,说明等)。这些事件在Google日历视图中还有一个“私人”锁定图标。

我查看了生成的iCal文件的内容,但我没有看到为什么Google Calendar会将事件呈现为私有的原因。每个VEVENT都将其CLASS属性设置为“PUBLIC”。我还在OSX的iCal应用程序中订阅了相同的URL,并且事件显示完美,并显示了所有详细信息。

下面是生成的ical文件(删除了敏感信息):

BEGIN:VCALENDAR
PRODID:-//My Calendar//iCal Class MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
X-WR-CALNAME:Joe Smith
BEGIN:VEVENT
DTSTART:20111124T050000Z
DTEND:20111124T050000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:ToDos_82
DTSTAMP:20111108T143800Z
DESCRIPTION;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Quisque convallis elementum dui at tristique.
SUMMARY;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Test Event
PRIORITY:0
CLASS:PUBLIC
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
DTSTART:20111124T050000Z
DTEND:20111124T050000Z
TRANSP:OPAQUE
SEQUENCE:0
UID:ToDos_83
DTSTAMP:20111108T143800Z
DESCRIPTION;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Proin venenatis ullamcorper dui quis porttitor. 
SUMMARY;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Another Test Event
PRIORITY:0
CLASS:PUBLIC
STATUS:CONFIRMED
END:VEVENT
BEGIN:VEVENT
DTSTART:20111108T050000Z
DTEND:20111111T050000Z
LOCATION;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:CLS HQ
TRANSP:OPAQUE
SEQUENCE:0
UID:Events_10
DTSTAMP:20111108T143800Z
DESCRIPTION;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Doing some more testing here
SUMMARY;LANGUAGE=en;ENCODING=QUOTED-PRINTABLE:Yet Another Test Event
PRIORITY:0
CLASS:PUBLIC
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

3 个答案:

答案 0 :(得分:2)

好吧,我似乎已经解决了这个问题。我提供给GCal的日历的URL没有以文件名结尾(我使用带有URL重写的PHP框架)。我更新了URL,将“/calendar.ics”附加到它并订阅了GCal中的URL,现在所有事件似乎都显示正常,显示所有细节。

答案 1 :(得分:2)

VEVENTS被标记为TRANSP:OPAQUE。根据{{​​3}},这意味着他们阻止了时间搜索的元素。

要使它们无阻塞,请将其更改为TRANSP:TRANSPARENT

答案 2 :(得分:0)

我测试了相同的内容,它似乎在我的Google日历中显示得很好。我使用“其他日历”下的“按网址添加”选项添加了它。所有细节都是可见的,没有显示任何锁定或其他怪异。

听起来您正在按需动态生成内容。您是否尝试将其转储到静态文件并以这种方式添加 - 而不是作为永久解决方案,只是为了看看它是否会对GCal产生影响?

日历数据的动态生成可能会考虑请求者并在此基础上更改事件可见性。例如,如果日历服务器在您的Intranet上,则很容易出现这种情况。