Обновления ICalendar и событий не работают в Outlook

я генерирую ICalendar (.ICS-файл.

используя поля UID и последовательности, я могу обновлять существующие события в Календаре Google и в календаре Windows А НЕ в MS Outlook 2007-он просто создает второе событие

Как заставить их работать в Outlook ?

спасибо

Тома

5 ответов


я продолжал делать некоторые тестирования и теперь удалось получить Outlook, чтобы обновить и отменить события на основе.cs файл.

Outlook на самом деле, похоже, отвечает правилам, определенным в RFC 2446

в резюме вы должны указать

METHOD:REQUEST и ORGANIZER:xxxxxxxx

кроме UID и SEQUENCE:

для отмены вы должны указать METHOD:CANCEL

Запрос/Обновление Пример

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:REQUEST
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:5
DTSTAMP:20081106T154911Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
DTEND:20081115T170000
SUMMARY:TestTraining
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

Отменить Примеру;

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//SYFADIS//PORTAIL FORMATION//FR
METHOD:CANCEL
BEGIN:VEVENT
UID:TS_229377_MS_262145@syfadis.com
SEQUENCE:7
DTSTAMP:20081106T154916Z
ORGANIZER:catalog@syfadis.com
DTSTART:20081113T164907
SUMMARY:TestTraining
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR

Оригинал:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

обновление:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
ORGANIZER:donotreply@test.com
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR

все, что я сделал, это добавил метод запроса (в правильном месте!) и организатором.


Я использую outlook 2003 (из чтения сообщений 2007, похоже, ведет себя одинаково), и вам нужно четко различать поведение явного импорта файла ics и неявного импорта, когда файл ics "дважды щелкнул".

в меню Outlook файл / импорт и экспорт ... Outlook загрузит столько записей VEVENT, сколько есть в файле, и никакое количество изменений UID:, SEQUENCE: или DTSTAMP: values не изменит это, i.e.если вы измените какие-либо данные и повторно импортируйте его, вы просто получите дубликат набора записей.

Если вы дважды щелкните файл ics, он обрабатывает только первую запись VEVENT. Однако он распознает UID, и если DTSTAMP: позже (последовательность может быть такой же, но не ниже), вам будет предложено обновить событие в вашем календаре.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.membership-services.net
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20090126T210000
DTEND:20090126T220000
SUMMARY:Avondale - Thameside Away Game vs Croydon
LOCATION:Whitgift School
DESCRIPTION:http://maps.google.co.uk/maps?f=q&hl=en&geocode=&q=CR2+6YT 
UID:AWPC_8
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
BEGIN:VEVENT
DTSTART:20090202T213000
DTEND:20090202T223000
SUMMARY:Avondale - Thameside Home Game vs Orcas
LOCATION:Putney
DESCRIPTION:http://maps.google.co.uk/maps?f=q&source=s_q&hl=en&ie=UTF8&ll=51.4635,-0.2285&spn=0.005,0.009613&t=h&z=17&iwloc=lyrftr:w2t.90,0x48760f04a04b1801:0x49ebf12503a5d5a9,51.463459,-0.228674 
UID:AWPC_10
SEQUENCE:0
DTSTAMP:20090123T112600
END:VEVENT
END:VCALENDAR

добавьте это в свой файл ICS

X-WR-RELCALID:MyCal123   

где MyCal123-уникальный идентификатор для вашего календаря.

при добавлении этой строки в файл ICS обновляется весь календарь (после запроса в Outlook). Вам даже не нужно менять DTSTAMP или последовательность или организатор и метод: публикация подходит для обновления. Просто обновите сведения о событии, дважды щелкните ICS и календарь будет обновляться. Обратите внимание, что это также отлично работает, если вы опубликовали календарь и предоставил URL-адрес для просмотра. Им просто нужно нажать "Обновить" примерно через 2 минуты, и они также получат обновление.

спасибо Дэвиду Бьернхарту за указание на это:iCal import создает новый календарь при открытии файла ics


я использую Entourage, поэтому это может не соответствовать точно с поведением, которое вы видите, но я надеюсь, что это поможет.

используя iCalendar из вашего ответа, Entourage даже не импортирует данные. Используя известный файл, я получил его для импорта, а затем успешно обновил. Сравнивая два файла, единственные структурные различия заключаются в следующем:

  • мое известное добро не имеет VERSION элемент
  • мое известное добро не имеет PRODID элемент
  • мое известное добро не имеет STATUS элемент
  • мое известное добро не имеет SEQUENCE элемент

поскольку поддержка Microsoft открытых стандартов имеет тенденцию отставать, я бы предложил попробовать без VERSION информация.