Удалить событие календаря с использованием импорта файла iCalendar (проблема Outlook 2003)?

Есть ли способ удалить элементы из календаря с помощью импорта 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:[email protected]
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:[email protected]
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

Ответы

Ответ 1

Я забыл добавить STATUS:CANCELLED

Теперь это должно отменять элементы в соответствии с http://en.wikipedia.org/wiki/ICalendar#Events_.28VEVENT.29

Это работает в Календаре Google, но не в Outlook 2003. Outlook все еще создает повторяющиеся записи.

Здесь изменяются события "отменить" с помощью "STATUS: CANCELED". (Английское правописание с двумя 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:[email protected]
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:[email protected]
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

Ответ 2

Я боролся с этим какое-то время.

Как уже упоминалось, вы должны включить:

МЕТОД: ОТМЕНА

и

STATUS: ОТМЕНА

линий VEVENT. UID должен быть таким же, как и исходное событие. И SEQUENCE: номер должен быть порядковым номером CURRENT! (вам не нужно добавлять 1 из последнего порядкового номера, так как отмена события не считается обновлением).

У меня возникли проблемы, так как я предположил, что аннулирование засчитывается как обновление и поэтому увеличивает его порядковый номер, но вам этого не нужно!

Ответ 3

Этот ответ предназначен для фидов URL-адресов iCal не для импорта файла iCal!

Я просмотрел это довольно долгое время, и поскольку ответ, на который на самом деле не разрешает проблему для Outlook, я думал, что опубликую то, что нашел для работы в Outlook, iCal и Календаре Google.

Просто вы просто не отправляете событие, если событие полностью отсутствует в фиде, а Outlook, Календарь Google и iCal (из моего тестирования) просто удаляют событие, как будто он никогда не существовал. Поэтому, если событие было отменено, просто притворитесь, что он никогда не существовал, и когда синхронизация локальных календарей будет отображать события, которые явно переданы им в фиде.

Ответ 4

Мне может потребоваться установить тег X-WR-RELCALID, в соответствии с этим http://www.oesf.org/forum/index.php?act=Print&client=printer&f=63&t=2650

В нем говорится: "Перед первой синхронизацией вы ДОЛЖНЫ добавить тег X-WR-RELCALID в файл mycalendar.ics, иначе iCal изменит номер UID всех записей, вызывая дубликаты".

Однако я не могу найти документацию по тегу RELCALID в протоколе http://tools.ietf.org/html/rfc2446

Когда я устанавливаю X-WR-RELCALID, Outlook по-прежнему создает повторяющиеся события вместо удаления этих событий.

Есть ли какая-либо документация по X-WR-RELCALID? Я не могу найти его.

Ответ 5

Я не знаю, поможет ли это, попробуйте установить SEQUENCE: 2

Ответ 6

Для меня это сработало, установив тег X-WR-RELCALID в заголовок файла ics. Затем Outlook распознал событие как одно и то же.

Ответ 7

Это может быть болезненным и непредсказуемым бизнесом и, вероятно, зависит от версии Outlook. У меня есть аннулирование событий, работающих с Outlook 2010 (v14). Я отправляю свой icalendar как одночастное сообщение, набираю текст/календарь, как обсуждалось в этом потоке. Как упоминалось в других ответах, у меня есть метод = CANCEL в типе MIME и снова в icalendar.

Критическим шагом для меня было добавление DTSTART к событию. Без этого поля сообщение не представляется как аннулирование, в области предварительного просмотра ничего не отображается, а календарь представлен как вложение с именем файла "не поддерживается calendar message.ics". Но вы можете поместить любую дату в поле! DTEND не имеет значения. ПОСЛЕДОВАТЕЛЬНОСТЬ может быть одинаковой или большей. 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

Ответ 8

Outlook создает дублирующее событие, если вы измените свойство UID. Вы должны создать другое событие с тем же UID.