Удалить событие календаря с помощью импорта файла iCalendar (проблема Outlook 2003)? - PullRequest
17 голосов
/ 10 декабря 2008

Можно ли удалить элементы из календаря с помощью импорта из iCalendar?

Я знаю, что существует МЕТОД: ОТМЕНА, однако, когда я попробовал, он ничего не сделал с событием календаря.

Вот что находится в моем файле 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

Ответы [ 9 ]

13 голосов
/ 11 декабря 2008

Я забыл добавить 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: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
7 голосов
/ 12 сентября 2011

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

Как уже упоминали некоторые другие, вы должны указать:

МЕТОД: CANCEL

и

СТАТУС: ОТМЕНА

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

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

3 голосов
/ 31 июля 2013

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

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

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

1 голос
/ 24 июня 2014

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

Критическим шагом для меня было добавление DTSTART к событию. Без этого поля сообщение не представляется в качестве отмены, на панели предварительного просмотра ничего не отображается, а календарь представляется в виде вложения с именем файла «не поддерживается календарь 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
1 голос
/ 04 августа 2011

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

1 голос
/ 10 марта 2009

Не знаю, поможет ли это, попробуйте установить ПОСЛЕДОВАТЕЛЬНОСТЬ: 2

1 голос
/ 11 декабря 2008

Мне может понадобиться установить 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? Я не могу найти это.

0 голосов
/ 19 февраля 2019

Вы должны сделать эти шаги, чтобы удалить событие календаря

  1. UID должен быть таким же
  2. Добавить МЕТОД: ОТМЕНА
  3. Добавить СТАТУС: ОТМЕНЕН
  4. SEQUENCE должно быть больше созданного события
0 голосов
/ 04 ноября 2009

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

...