Удалить событие календаря с использованием импорта файла 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.