Domanda

Sto generando file ICalendar (.ics).

Utilizzando i campi UID e SEQUENZA posso aggiornare gli eventi esistenti in Google Calendar e in Windows Calendar MA NO in MS Outlook 2007: crea semplicemente un secondo evento

Come faccio a farli funzionare per Outlook?

Grazie

Tom

È stato utile?

Soluzione

Ho continuato a eseguire alcuni test e ora sono riuscito a fare in modo che Outlook aggiorni e annulli gli eventi in base al file .cs.

Outlook infatti sembra rispondere alle regole definite nell'art RFC2446

In sintesi devi specificare

METHOD:REQUEST E ORGANIZER:xxxxxxxx

inoltre UID:E SEQUENCE:

Per una cancellazione è necessario specificare METHOD:CANCEL

Esempio di richiesta/aggiornamento

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

Annulla Esempio;

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

Altri suggerimenti

Ho contattato Tom Carter, il richiedente.Aveva un esempio funzionante con una richiesta seguita da una cancellazione.Quello che avevo sbagliato era che il mio METODO era all'interno del mio VEVENT quando avrebbe dovuto essere fuori.Quindi ecco un aggiornamento funzionante!

Originale:

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

Aggiornamento:

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

Tutto quello che ho fatto è stato aggiungere il metodo di richiesta (nel punto giusto!) e un organizzatore.

Sto usando Outlook 2003 (dalla lettura dei post, il 2007 sembra comportarsi allo stesso modo) ed è necessario distinguere chiaramente tra il comportamento dell'importazione esplicita di un file ics e l'importazione implicita quando si fa doppio clic su un file ics '.

Nel menu di Outlook File/Importa ed esporta...Outlook caricherà tutte le voci VEVENT presenti nel file e nessuna modifica all'UID:, SEQUENZA:o DTSTAMP:values ​​cambia questo, cioè se modifichi dei dati e li reimporti, otterrai solo un set di voci duplicato.

Se si fa doppio clic su un file ics, viene elaborata solo la prima voce VEVENT.Tuttavia riconosce l'UID e, se DTSTAMP:è successivo (la SEQUENZA può essere la stessa ma non inferiore) ti verrà richiesto e l'evento verrà aggiornato nel tuo calendario.

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

aggiungilo al tuo file ICS

X-WR-RELCALID:MyCal123   

dove MyCal123 è un identificatore univoco per il tuo calendario.

Aggiungendo questa riga a un file ICS, l'intero calendario viene aggiornato (dopo una richiesta in Outlook).Non è nemmeno necessario modificare DTSTAMP o SEQUENCE o ORGANIZER e METODO: PUBLISH va bene per l'aggiornamento.Basta aggiornare i dettagli dell'evento, fare doppio clic sull'ICS e il calendario si aggiornerà.Tieni presente che funziona bene anche se hai pubblicato il calendario e fornito un URL affinché le persone possano visualizzarlo.Devono solo premere Aggiorna dopo circa 2 minuti e riceveranno anche l'aggiornamento.

Grazie a David Bjørnhart per averlo sottolineato: L'importazione ICal crea un nuovo calendario quando si apre il file ics

Sto utilizzando Entourage, quindi potrebbe non corrispondere esattamente al comportamento che stai vedendo, ma spero che sia d'aiuto.

Utilizzando iCalendar dalla tua risposta, Entourage non importerebbe nemmeno i dati.Utilizzando un file noto, sono riuscito a importarlo e quindi ad aggiornarlo con successo.Confrontando i due file le uniche differenze strutturali sono le seguenti:

  • Il mio bene conosciuto non ha un VERSION elemento
  • Il mio bene conosciuto non ha un PRODID elemento
  • Il mio bene conosciuto non ha un STATUS elemento
  • Il mio bene conosciuto non ha un SEQUENCE elemento

Poiché il supporto di Microsoft per gli standard aperti tende a rallentare, suggerirei di provare senza VERSION informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top