質問

ICalendar (.ics) ファイルを生成しています。

UID フィールドと SEQUENCE フィールドを使用して、Google カレンダーと Windows カレンダーの既存のイベントを更新できます だがしかし MS Outlook 2007 - 2 番目のイベントを作成するだけです

Outlook で機能させるにはどうすればよいですか?

ありがとう

トム

役に立ちましたか?

解決

いくつかのテストを続けた結果、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

他のヒント

質問者のトム・カーターと連絡を取りました。彼は、リクエストの後にキャンセルが発生する実際の例を持っていました。私が間違っていたのは、METHOD が外にあるはずの VEVENT の中にあったことです。というわけで、動作するアップデートをご紹介します!

オリジナル:

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:値によってこれが変更されます。つまり、データを変更して再インポートすると、重複したエントリのセットが取得されるだけです。

ics ファイルをダブルクリックすると、最初の VEVENT エントリのみが処理されます。ただし、UID は認識され、DTSTAMP の場合は次のようになります。それ以降 (SEQUENCE は同じでもそれより低くはできません)、プロンプトが表示され、カレンダー内のイベントが更新されます。

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、SEQUENCE、ORGANIZER を変更する必要さえなく、METHOD:PUBLISH で更新できます。イベントの詳細を更新し、ICS をダブルクリックするだけで、カレンダーが更新されます。これは、カレンダーを公開し、ユーザーがそれを表示できるように URL を提供した場合にも正常に機能することに注意してください。約 2 分後に [更新] をクリックするだけで、アップデートも入手できます。

この点を指摘してくれた David Bjørnhart に感謝します。 ICal インポートにより、ics ファイルを開くと新しいカレンダーが作成されます

私は Entourage を使用しているため、表示されている動作と正確に一致しない可能性がありますが、お役に立てれば幸いです。

返信の iCalendar を使用しても、Entourage はデータをインポートすることさえできません。正常なファイルを使用すると、インポートでき、正常に更新できました。2 つのファイルを比較すると、構造上の違いは次のとおりです。

  • 私の既知の正常な製品には、 VERSION 要素
  • 私の既知の正常な製品には、 PRODID 要素
  • 私の既知の正常な製品には、 STATUS 要素
  • 私の既知の正常な製品には、 SEQUENCE 要素

Microsoft のオープン スタンダードのサポートは遅れる傾向があるため、 VERSION 情報。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top