【问题标题】:Delete calendar event using iCalendar file import (Outlook 2003 problem)?使用 iCalendar 文件导入删除日历事件(Outlook 2003 问题)?
【发布时间】:2010-09-26 06:37:38
【问题描述】:

我可以使用 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

【问题讨论】:

    标签: outlook icalendar


    【解决方案1】:

    忘记加STATUS:CANCELLED

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

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

    这里是修改后的带有“STATUS:CANCELLED”的“取消”事件。 (英式拼写有两个 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
    

    【讨论】:

    • 仅供参考,Google 对 CANCELLED 区分大小写; STATUS:Cancelled 静默失败。
    • 有没有人在最新的 Outlook 365 桌面客户端(Office 365 MSO(16.0.11601.20184) 64 位)中尝试过这个,对我来说删除不起作用,我已经尝试了这个线程的所有答案.这是详细描述问题的问题stackoverflow.com/questions/56754329/…
    【解决方案2】:

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

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

    方法:取消

    状态:已取消

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

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

    【讨论】:

      【解决方案3】:

      此答案适用于 iCal URL 供稿,不适用于导入 iCal 文件!

      我对此进行了很长时间的研究,由于给出的答案实际上并没有解决 Outlook 的问题,我想我会发布我发现的适用于 Outlook、iCal 和 Google 日历的内容。

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

      【讨论】:

      • 我认为这行不通。如果我在第一次同步和下一次同步中有 10 个事件,则其中一个事件被删除(不在 ics 文件中)。丢失的事件仍然存在于 iCal 或任何其他日历(谷歌等)中,即使新同步没有该事件,也不会被删除。
      • @Kush 你是对的。我犯了一个错误并在此处发布了我的答案,但我的答案不适用于文件导入。它用于从 URL 导入日历。例如在 Google 日历中通过 URL 添加日历,而不是从文件中导入。这是我的一个错误,希望我的回答没有浪费你太多时间。
      【解决方案4】:

      这可能是一项痛苦且无法预测的业务,并且可能取决于 Outlook 版本。我有使用 Outlook 2010 (v14) 的事件取消。如this 线程中所述,我将我的 icalendar 作为单部分消息发送,键入 text/calendar。正如其他答案中提到的,我在 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
      

      【讨论】:

        【解决方案5】:

        我可能需要设置 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 的文档?没找到。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 你是随便挑一个吗?
            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              您应该执行这些步骤来删除日历事件

              1. UID 必须相同
              2. 添加方法:取消
              3. 添加状态:已取消
              4. SEQUENCE 必须大于创建的事件

              【讨论】:

              • 我已经尝试了所有可能的方法都没有成功。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-08-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多