如何创建一个具有多个VEVENT的.ICS文件以导入到现有的Outlook日历中

问题描述:

我需要允许用户下载具有多个会议日期的事件。为了做到这一点,我创建了一个可以下载的内存流,可以生成一个.ics文件。例如:如何创建一个具有多个VEVENT的.ICS文件以导入到现有的Outlook日历中

 
BEGIN:VCALENDAR 
PRODID:-//Company//Product//EN 
VERSION:2.0 
METHOD:PUBLISH 
BEGIN:VEVENT 
SUMMARY:Subject of Event 
LOCATION:Location of Event 
UID:[email protected] 
DESCRIPTION:Some description 
DTEND:20081101T200000Z 
DTSTART:20081101T200000Z 
PRIORITY:3 
END:VEVENT 
BEGIN:VEVENT 
    ... 
END:VEVENT 
END:VCALENDAR 

如果我只在该文件中包含一个VEVENT,它会将它保存到我现有的Outlook日历中。但是,当我有多个VEVENT时,它想将其作为新日历打开并将其归档到“其他日历”下。

有没有一种方法(不使用从Outlook内的文件导入)来指定打开日历时应该自动导入到现有的日历?

更新:为了澄清,每个VEVENT与单个“约会”相关。然而,可能有或可能没有反复出现的模式。

-Mike

+0

这是相同的约会,有复发模式或约会是不相关的吗? – Tomalak 2008-12-02 15:48:53

+0

这是相同的约会...不幸的是,可能会或可能不会有一个重复的模式。比如它会在本周的周二和周三的下周会见,等等。 – mwilkes 2008-12-02 15:52:30

+0

我想“VBEGIN”是一个错字? – Tomalak 2008-12-02 15:57:14

我不认为这会奏效。导入这些“打开”规格的Outlook受到限制。我有一个类似的问题,试图导入多个联系人的vCard文件。我最终分裂了文件并在Outlook中编写脚本以导入目录中的所有文件。

这是可能的,使用互联网日历(如谷歌)。 Outlook 2007能够订阅Internet日历(在“帐户设置”下),Outlook 2003具有可用的开放源代码插件。您可以创建一个“只读”的可访问馈送。该格式是这样

BEGIN:VCALENDAR 
PRODID:-//XYZ Corp//My Product//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:PUBLISH 
X-WR-CALNAME:My Calendar 
X-WR-TIMEZONE:(GMT-05:00) Eastern Time (US & Canada) 
BEGIN:VEVENT 
DTSTART:20061021T100000Z 
DTEND:20061021T130000Z 
DTSTAMP:20090211T175526Z 
UID:5f98dfd5-ac72-4ae1-b3c2-799a4e7c91f9 
CLASS:PUBLIC 
CREATED:20071104T183833Z 
DESCRIPTION: My description text. 
LAST-MODIFIED:20071104T183833Z 
LOCATION: 123 Anywhere Street\; Anyplace, NJ 12345\; US 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY: My summary text. 
TRANSP:OPAQUE 
END:VEVENT 
BEGIN:VEVENT 
DTSTART:20061101T170000Z 
DTEND:20061101T180000Z 
DTSTAMP:20090211T175526Z 
UID:6eaef015-eb90-4e94-8e6c-0003b928969a 
CLASS:PUBLIC 
CREATED:20071104T183833Z 
DESCRIPTION: My description for number 2. 
LAST-MODIFIED:20071104T183833Z 
LOCATION: 123 Anywhere Street\; Anyplace, NJ 12345\; US 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY: My summary for #2. 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR 

这是对后市3 FIFA 2010场比赛为例,我猜,这是你在找什么...

BEGIN:VCALENDAR 

PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN 

VERSION:2.0 

METHOD:PUBLISH 

X-CALSTART:20100611T140000Z 

X-CALEND:20100711T201500Z 

X-WR-RELCALID:{0000002E-5A22-AA75-713B-5C3715764495} 

X-WR-CALNAME: World Cup Football Complete Match Schedule 2010 South Africa 

BEGIN:VEVENT 

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa 

CLASS:PUBLIC 

CREATED:20100608T231102Z 

DESCRIPTION:Group A\nFollow MarkThisDate on Twitter 

    markthisdate 

DTEND:20100611T154500Z 

DTSTAMP:20100513T100200Z 

DTSTART:20100611T140000Z 

LAST-MODIFIED:20100608T231102Z 

LOCATION:Johannesburg 

PRIORITY:5 

SEQUENCE:0 

SUMMARY:South Africa - Mexico 

TRANSP:TRANSPARENT 

UID:[email protected] 

X-MICROSOFT-CDO-BUSYSTATUS:FREE 

X-MICROSOFT-CDO-IMPORTANCE:1 

END:VEVENT 

BEGIN:VEVENT 

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa 

CLASS:PUBLIC 

CREATED:20100608T231102Z 

DESCRIPTION:Group A\nFollow MarkThisDate on Twitter 

    markthisdate 

DTEND:20100611T201500Z 

DTSTAMP:20100513T100200Z 

DTSTART:20100611T183000Z 

LAST-MODIFIED:20100608T231102Z 

LOCATION:Cape Town 

PRIORITY:5 

SEQUENCE:0 

SUMMARY:Uruguay - France 

TRANSP:TRANSPARENT 

UID:[email protected] 

X-MICROSOFT-CDO-BUSYSTATUS:FREE 

X-MICROSOFT-CDO-IMPORTANCE:1 

END:VEVENT 

BEGIN:VEVENT 

CATEGORIES:World Cup Football Complete Match Schedule 2010 South Africa 

CLASS:PUBLIC 

CREATED:20100608T231102Z 

DESCRIPTION:Group B\nFollow MarkThisDate on Twitter 

    markthisdate 

DTEND:20100612T131500Z 

DTSTAMP:20100513T100200Z 

DTSTART:20100612T113000Z 

LAST-MODIFIED:20100608T231102Z 

LOCATION:Nelson Mandela Bay/Port Elizabeth 

PRIORITY:5 

SEQUENCE:0 

SUMMARY:Korea Republic - Greece 

TRANSP:TRANSPARENT 

UID:[email protected] 

X-MICROSOFT-CDO-BUSYSTATUS:FREE 

X-MICROSOFT-CDO-IMPORTANCE:1 

END:VEVENT 

END:VCALENDAR 

确保您使用每个VEVENT都有一个唯一的UID。如果您为每个VEVENT使用相同的UID,则只会看到您描述的行为,因为只有唯一的UID被处理并添加到日历中。

HTH。

这应该是可能的:/下面的谷歌工作,并加载到随行罚款。展望似乎有一些问题,但会继续寻找。

注意 - 当你使用file> import等时,它可以正确地导入到Outlook中,只有双击才会导致它只加载第一个事件。

BEGIN:VCALENDAR 
PRODID:-//Google Inc//Google Calendar 70.9054//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:PUBLISH 
X-WR-CALNAME:Insert something 
X-WR-TIMEZONE:Insert something 
X-WR-CALDESC: 

BEGIN:VEVENT 
DTSTART:20110909T180000Z 
DTEND:20110909T200000Z 
DTSTAMP:20110722T004312Z 
UID:[email protected] 
CREATED:20110721T105553Z 
DESCRIPTION: 
LAST-MODIFIED:20110721T105554Z 
LOCATION:Insert something 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:Insert something 
TRANSP:OPAQUE 
BEGIN:VALARM 
ACTION:DISPLAY 
DESCRIPTION:This is an event reminder 
TRIGGER:-P0DT0H10M0S 
END:VALARM 
END:VEVENT 

BEGIN:VEVENT 
DTSTART:20110909T083000Z 
DTEND:20110909T103000Z 
DTSTAMP:20110722T004312Z 
UID:[email protected] 
CREATED:20110721T105410Z 
DESCRIPTION: 
LAST-MODIFIED:20110721T111008Z 
LOCATION:Auckland 
SEQUENCE:1 
STATUS:CONFIRMED 
SUMMARY:Insert something 
TRANSP:OPAQUE 
BEGIN:VALARM 
ACTION:DISPLAY 
DESCRIPTION:Insert something 
TRIGGER:-P0DT0H10M0S 
END:VALARM 
END:VEVENT 

END:VCALENDAR