我有办法使用iCalendar导入从日历中删除项目吗?
我知道有一个方法:CANCEL,但是当我尝试它时,它对日历事件没有任何作用。
以下是我的iCalendar文件中的内容。当我尝试将其导入Outlook时,它只是添加了这些事件。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//DDay.iCal//NONSGML ddaysoftware.com//EN
METHOD:CANCEL
BEGIN:VEVENT
CREATED:20081210T155315Z
DESCRIPTION:
DTEND:20081213T093000
DTSTAMP:20081210T155315Z
DTSTART:20081213T093000
LOCATION:
ORGANIZER:MAILTO:user@domain.com
SEQUENCE:1
SUMMARY:From FCS 13th
UID:20367b86-2123-4930-87ef-5c2a6626bd9f
BEGIN:VALARM
ACTION:DISPLAY
SUMMARY: Event 13th
TRIGGER:-PT30M
END:VALARM
END:VEVENT
BEGIN:VEVENT
CREATED:20081210T155315Z
DESCRIPTION:
DTEND:20081211T093000
DTSTAMP:20081210T155315Z
DTSTART:20081211T093000
LOCATION:7 West
ORGANIZER:MAILTO:user@domain.com
SEQUENCE:1
SUMMARY:Event 11th
UID:f212ab15-86c3-46c8-8592-af0716a40ea2
BEGIN:VALARM
ACTION:DISPLAY
SUMMARY:Event on 11th
TRIGGER:-PT30M
END:VALARM
END:VEVENT
END:VCALENDAR
答案 0 :(得分:13)
我忘了添加STATUS:CANCELLED
现在这应该根据http://en.wikipedia.org/wiki/ICalendar#Events_.28VEVENT.29
取消项目这适用于Google日历,但不适用于Outlook 2003.Outlook仍会创建重复的条目。
以下是“STATUS:CANCELED”修改后的“取消”事件。 (英文拼写有两张L's)
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//DDay.iCal//NONSGML ddaysoftware.com//EN
X-WR-RELCALID:928C8448-048A-4aa2-BE27-A920773AF3DC
METHOD:CANCEL
BEGIN:VEVENT
CREATED:20081210T210344Z
DESCRIPTION:
DTEND:20081213T093000
DTSTAMP:20081210T210344Z
DTSTART:20081213T093000
LOCATION:
ORGANIZER:MAILTO:user@domain.com
SEQUENCE:1
STATUS:CANCELLED
SUMMARY:Event to export 1
UID:20367b86-2123-4930-87ef-5c2a6626bd9f
BEGIN:VALARM
ACTION:DISPLAY
SUMMARY:Event to export 1
TRIGGER:-PT30M
END:VALARM
END:VEVENT
BEGIN:VEVENT
CREATED:20081210T210344Z
DESCRIPTION:
DTEND:20081211T093000
DTSTAMP:20081210T210344Z
DTSTART:20081211T093000
LOCATION:7 West
ORGANIZER:MAILTO:user@domain.com
SEQUENCE:1
STATUS:CANCELLED
SUMMARY:Event to export 2
UID:f212ab15-86c3-46c8-8592-af0716a40ea2
BEGIN:VALARM
ACTION:DISPLAY
SUMMARY:Event to export 2
TRIGGER:-PT30M
END:VALARM
END:VEVENT
END:VCALENDAR
答案 1 :(得分:7)
我一直在努力解决这个问题。
正如其他一些人所说,你必须包括:
方法:CANCEL
和
STATUS:取消
VEVENT的行。 UID必须与原始事件相同且SEQUENCE:number必须是CURRENT序列号! (您不需要从最后一个序列号添加1,因为取消事件不算作更新)。
我遇到了问题,因为我认为取消被视为更新,因此增加了我的序列号,但你没有必要!
答案 2 :(得分:3)
此答案适用于iCal网址Feed,不适用于导入iCal文件!
我对此进行了一段时间的调查,因为给出的答案实际上并没有解决Outlook的问题,我想我会发布我发现的用于Outlook,iCal和Google日历的内容。
您只是不发送事件,如果事件完全不在Feed中,那么Outlook,Google日历和iCal(来自我的测试)都只是删除事件,就好像它从未存在过一样。因此,如果事件已取消,只是假装它从未存在过,当本地日历同步时,它们将显示在Feed中明确指定给它们的事件。
答案 3 :(得分:1)
根据此http://www.oesf.org/forum/index.php?act=Print&client=printer&f=63&t=2650
,我可能需要设置 X-WR-RELCALID 标记它声明:“在第一次同步之前,你必须在mycalendar.ics文件中添加一个X-WR-RELCALID标签,否则iCal将更改所有条目的UID号,从而导致重复。”
但是我在协议http://tools.ietf.org/html/rfc2446
中找不到有关RELCALID标记的任何文档当我设置X-WR-RELCALID时,Outlook仍会创建重复事件,而不是删除这些事件。
是否有关于X-WR-RELCALID的文档?我找不到它。
答案 4 :(得分:1)
我不知道这是否有帮助,请尝试设置SEQUENCE:2
答案 5 :(得分:1)
对我而言,它通过在ics文件的标题中设置X-WR-RELCALID
标记来起作用。然后Outlook认为该事件是相同的。
答案 6 :(得分:1)
这可能是一项痛苦且难以预测的业务,可能依赖于Outlook版本。我已经使用Outlook 2010(v14)取消了事件。我发送我的icalendar作为单部分消息,键入文本/日历,如this线程中所述。正如在其他答案中提到的,我在MIME类型中有method = CANCEL,在icalendar中也是如此。
对我来说关键的一步是将DTSTART添加到活动中。如果没有此字段,则消息不会显示为取消,预览窗格中没有任何内容,并且日历显示为文件名为“not supported calendar message.ics”的附件。 但你可以在现场放置任何你喜欢的日期! DTEND并不重要。 SEQUENCE可以相同或更大。 DTSTAMP并不重要,但如果存在,必须在带有初始邀请的DTSTAMP之后,否则显示“未激活”文本而不是“从日历中删除”按钮。
这是一个最小的工作取消...
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//www.notilus.com//Dimo Gestion Notilus//FR
CALSCALE:GREGORIAN
METHOD:CANCEL
BEGIN:VEVENT
DTSTART:20140625T123000Z
SEQUENCE:1
STATUS:CANCELLED
UID:Kerry
END:VEVENT
END:VCALENDAR
答案 7 :(得分:0)
如果更改UID属性,Outlook会创建重复事件。 您必须使用相同的UID创建另一个事件。
答案 8 :(得分:0)
您应该执行以下步骤以删除日历事件