首页 / 知识

关于不可知的语言:日历和事件更新在Outlook中不起作用

2023-04-14 07:20:00

关于不可知的语言:日历和事件更新在Outlook中不起作用

ICalendar and event updates not working in Outlook

我正在生成ICalendar(.ics)文件。

使用UID和SEQUENCE字段,我可以更新Google日历和Windows日历中的现有事件,但不能在MS Outlook 2007中更新-它只是创建第二个事件

如何使它们在Outlook中工作?

谢谢

汤姆


我继续进行一些测试,现在设法使Outlook根据.cs文件更新和取消事件。

Outlook实际上似乎响应RFC 2446中定义的规则

总之,您必须指定

METHOD:REQUESTORGANIZER:xxxxxxxx

除了UID:和SEQUENCE:

要取消,您必须指定METHOD:CANCEL

请求/更新示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:REQUEST
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:5
DTSTAMP:20081106T154911Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
DTEND:20081115T170000
SUMMARY:TestTraining
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

取消示例;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:CANCEL
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:7
DTSTAMP:20081106T154916Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
SUMMARY:TestTraining
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR

我抓住了问问者汤姆·卡特(Tom Carter)。他有一个可行的示例,其中有一个请求,然后被取消。我不对的是,我的METHOD应该在VEVENT内,而应该在外面。因此,这是一个有效的更新!

原版的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

更新:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

我所做的只是添加了request方法(在正确的位置!)和一个组织器。


我使用的是Outlook 2003(从阅读帖子中可以看到,2007的行为方式相同),您需要清楚地区分ics文件的显式文件导入和双击ics文件时的隐式导入之间的行为。 '。

在Outlook菜单上的"文件/导入和导出..."上,Outlook将加载与文件中一样多的VEVENT条目,并且不会更改任何数量的UID:,SEQUENCE:或DTSTAMP:值会更改此值,即,如果更改任何数据并重新导入它,您将获得一组重复的条目。

如果双击ics文件,它将仅处理第一个VEVENT条目。但是,它确实可以识别UID,并且如果DTSTAMP:之后(SEQUENCE可以相同,但不能更低),则会提示您,并且它将更新日历中的事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.membership-services.net
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20090126T210000
DTEND:20090126T220000
SUMMARY:Avondale - Thameside Away Game vs Croydon
LOCATION:Whitgift School
DESCRIPTION:http://maps.google.co.uk/maps?f=q&hl=en&geocode=&q=CR2+6YT
UID:AWPC_8
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
BEGIN:VEVENT
DTSTART:20090202T213000
DTEND:20090202T223000
SUMMARY:Avondale - Thameside Home Game vs Orcas
LOCATION:Putney
DESCRIPTION:http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&ie=UTF8&ll=51.4635,-0.2285&spn=0.005,0.009613&t=h&z=17&iwloc=lyrftr:w2t.90,0x48760f04a04b1801:0x49ebf12503a5d5a9,51.463459,-0.228674
UID:AWPC_10
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
END:VCALENDAR

将此添加到您的ICS文件

1
X-WR-RELCALID:MyCal123

其中MyCal123是您日历的唯一标识符。

通过将此行添加到ICS文件中,整个日历将得到更新(在Outlook中出现提示后)。您甚至不需要更改DTSTAMP或SEQUENCE或ORGANIZER,并且METHOD:PUBLISH可以进行更新。只需更新事件详细信息,双击ICS,日历就会更新。请注意,如果您已发布日历并提供了供人们查看日历的URL,则此方法也很好用。他们只需要在2分钟后点击刷新,他们也会获得更新。

感谢David Bj?rnhart指出:ICal导入会在打开ics文件时创建新日历


我正在使用Entourage,因此这可能与您所看到的行为不完全匹配,但我希望它能对您有所帮助。

使用您回复中的iCalendar,Entourage甚至不会导入数据。使用已知良好的文件,我将其导入,然后成功更新。比较这两个文件,唯一的结构差异如下:

  • 我的已知商品没有VERSION元素
  • 我的已知商品没有PRODID元素
  • 我的已知商品没有STATUS元素
  • 我的已知商品没有SEQUENCE元素

由于Microsoft对开放标准的支持趋于落后,因此建议您尝试不使用VERSION信息。


事件语言字段文件

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢