20

有没有办法让我使用 iCalendar 导入从日历中删除项目?

我知道有一个 METHOD: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
4

9 回答 9

13

我忘了添加STATUS:CANCELLED

现在这应该根据http://en.wikipedia.org/wiki/ICalendar#Events_.28VEVENT.29取消项目

这适用于 Google 日历,但不适用于 Outlook 2003。Outlook 仍会创建重复条目。

这里是修改后的“取消”事件,带有“状态:取消”。(带有两个 L 的英式拼写)

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
于 2008-12-10T21:16:49.500 回答
7

我为此苦苦挣扎了一段时间。

正如其他一些人提到的,您必须包括:

方法:取消

状态:已取消

VEVENT 的线条。UID 必须与原始事件相同,并且 SEQUENCE: 编号必须是 CURRENT 序列号!(您不需要从最后一个序列号中添加 1,因为取消事件不算作更新)。

我遇到了问题,因为我认为取消算作更新,因此增加了我的序列号,但您不必这样做!

于 2011-09-12T14:57:59.660 回答
6

此答案适用于 iCal URL 提要,而不是用于导入 iCal 文件!

我研究了很长一段时间,因为给出的答案实际上并没有解决 Outlook 的问题,所以我想我会发布我发现的适用于 Outlook、iCal 和 Google 日历的内容。

您只是简单地不发送事件,如果事件完全不在提要中,那么 Outlook、Google 日历和 iCal(来自我的测试)都只是删除事件,就好像它从未存在一样。因此,如果事件已被取消,只需假装它从未存在,当本地日历同步时,它们将显示在提要中明确提供给它们的事件。

于 2013-07-31T19:43:37.273 回答
2

这可能是一项痛苦且不可预测的业务,并且可能依赖于 Outlook 版本。我有使用 Outlook 2010 (v14) 的事件取消。我将我的 icalendar 作为单部分消息发送,键入文本/日历,如线程中所述。正如其他答案中提到的那样,我在 MIME 类型中有 method=CANCEL,在 icalendar 中也有。

对我来说关键的一步是将 DTSTART 添加到事件中。如果没有此字段,则消息不会显示为取消,预览窗格中没有任何内容,日历显示为文件名为“不支持的日历 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
于 2014-06-24T15:51:18.830 回答
1

我可能需要设置X-WR-RELCALID标签,根据这个http://www.oesf.org/forum/index.php?act=Print&client=printer&f=63&t=2650

它指出:“在第一次同步之前,您必须在 mycalendar.ics 文件中添加一个 X-WR-RELCALID 标签,否则 iCal 将更改所有条目的 UID 编号,从而导致重复。”

但是我在协议https://www.rfc-editor.org/rfc/rfc2446中找不到任何关于 RELCALID 标记的文档

当我设置 X-WR-RELCALID 时,Outlook 仍然会创建重复的事件,而不是删除这些事件。

有没有关于 X-WR-RELCALID 的文档?我找不到它。

于 2008-12-10T21:30:29.630 回答
1

我不知道这是否有帮助,请尝试设置 SEQUENCE: 2

于 2009-03-10T17:44:58.880 回答
1

对我来说,它通过X-WR-RELCALID在 ics 文件的标题中设置标签来工作。然后 Outlook 将事件识别为相同。

于 2011-08-04T11:58:14.687 回答
0

如果您更改 UID 属性,Outlook 会创建重复事件。您必须使用相同的 UID 创建另一个事件。

于 2009-11-04T11:32:04.340 回答
0

您应该执行以下步骤来删除日历事件

  1. UID 必须相同
  2. 添加方法:取消
  3. 添加状态:已取消
  4. SEQUENCE 必须大于创建的事件
于 2019-02-19T18:11:00.977 回答