ICalendar 和事件更新在 Outlook 中不起作用
我正在生成 ICalendar (.ics) 文件。
使用 UID 和 SEQUENCE 字段,我可以在 MS Outlook 2007 中更新 Google 日历和 Windows 日历中的现有事件但不能 - 它只会创建第二个事件
我如何获取它们为 Outlook 工作?
谢谢
汤姆
I'm generating ICalendar (.ics) files.
Using the UID and SEQUENCE fields I can update existing events in Google Calendar and in Windows Calendar BUT NOT in MS Outlook 2007 - it just creates a second event
How do I get them to work for Outlook ?
Thanks
Tom
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我联系了提问者汤姆·卡特。 他有一个工作示例,其中包含请求,然后取消。 我的错误是我的方法在我的 VEVENT 内部,而它本应在外部。 这是一个工作更新!
原文:
更新:
我所做的只是添加请求方法(在正确的位置!)和组织者。
I got a hold of Tom Carter, the asker. He had a working example with a request followed by a cancellation. What I had wrong was my METHOD was inside my VEVENT when it should have been outside. So here is a working update!
Original:
Update:
All I did was add the request method (in the correct spot!), and an organizer.
我正在使用 Outlook 2003(从阅读帖子来看,2007 似乎以相同的方式运行),您需要清楚地区分 ics 文件的显式文件导入和“双击 ics 文件时的隐式导入”的行为'。
在 Outlook 菜单文件/导入和导出...Outlook 将加载与文件中一样多的 VEVENT 条目,并且无需更改 UID:、SEQUENCE: 或 DTSTAMP: 值即可更改此设置,即如果您更改任何数据并重新导入你只会得到一组重复的条目。
如果双击 ics 文件,它将仅处理第一个 VEVENT 条目。 但是,它确实可以识别 UID,并且如果 DTSTAMP: 较晚(SEQUENCE 可以相同但不能更低),系统会提示您,并且会更新日历中的事件。
I am using outlook 2003 (from reading the posts, 2007 appears to behave in the same way) and you need to clearly distinguish between the behaviour of the explicit file import of an ics file and the implicit import when an ics file is 'double clicked'.
On the Outlook menu File / Import and Export ... Outlook will load as many VEVENT entries as are in the file and no amount of changing UID:, SEQUENCE: or DTSTAMP: values changes this, i.e.if you change any data and re-import it you just get a duplicate set of entries.
If you double click on an ics file it processes the first VEVENT entry only. However it does recognise the UID and, if the DTSTAMP: is later (the SEQUENCE can be the same but not lower) you will be prompted and it will update the event in your calendar.
将其添加到您的 ICS 文件中
,其中 MyCal123 是您日历的唯一标识符。
通过将此行添加到 ICS 文件中,整个日历都会更新(在 Outlook 中出现提示后)。 您甚至不需要更改 DTSTAMP 或 SEQUENCE 或 ORGANIZER 和 METHOD:PUBLISH 就可以进行更新。 只需更新活动详细信息,双击 ICS,日历就会更新。 请注意,如果您已发布日历并提供了 URL 供人们查看,这也可以正常工作。 他们只需要在大约 2 分钟后点击刷新,他们也会收到更新。
感谢 David Bjørnhart 指出这一点: ICal 导入创建打开 ics 文件时的新日历
add this to your ICS file
where MyCal123 is a unique identifier for your calendar.
By adding this line to an ICS file the entire calendar gets updated (after a prompt in Outlook). You don't even need to change the DTSTAMP or SEQUENCE or ORGANIZER and METHOD:PUBLISH is fine for the update. Just update the event details, double-click the ICS and the calendar will update. Note that this also works fine if you have published the calendar and provided a URL for people to view it. They just need to hit refresh after about 2mins and they will also get the update.
Thanks to David Bjørnhart for pointing this out: ICal import creates new calendar When Open the ics file
我正在使用 Entourage,因此这可能与您所看到的行为不完全匹配,但我希望它有所帮助。
使用您回复中的 iCalendar,Entourage 甚至不会导入数据。 使用已知良好的文件,我将其导入,然后成功更新。 比较这两个文件,唯一的结构差异如下:
VERSION
元素PRODID
元素PRODID
元素我 known-good 没有STATUS
元素SEQUENCE
元素由于 Microsoft 对开放标准的支持往往滞后,我建议尝试没有
VERSION
信息。I'm using Entourage, so this may not match up exactly with the behavior you're seeing, but I hope it helps.
Using the iCalendar from your reply, Entourage wouldn't even import the data. Using a known-good file, I got it to import, then successfully update. Comparing the two files, the only structural differences are as follows:
VERSION
elementPRODID
elementSTATUS
elementSEQUENCE
elementSince Microsoft's support for open standards tends to lag, I'd suggest trying without the
VERSION
info.我继续进行了一些测试,现在已成功让 Outlook 根据 .cs 文件更新和取消事件。
Outlook 实际上似乎响应 RFC 2446 中定义的
规则 还必须指定
METHOD:REQUEST
和ORGANIZER:xxxxxxxx
摘要除了
UID
: 和SEQUENCE: 之外,
您 取消您必须指定
METHOD:CANCEL
请求/更新示例
取消示例;
I've continued to do some testing and have now managed to get Outlook to update and cancel events based on the .cs file.
Outlook in fact seems to respond to the rules defined in RFC 2446
In summary you have to specify
METHOD:REQUEST
andORGANIZER:xxxxxxxx
in addition to
UID
: andSEQUENCE:
For a cancellation you have to specify
METHOD:CANCEL
Request/Update Example
Cancel Example;