現在、office365のREST APIを用いて、予定表の更新(EVENT)を行いたいと考えております。
更新は予定時間の更新を想定しております。
PATCHは下記の通りで行っております。
C#
1 public static async Task<Event> PatchHttpContentWithTokenAsync(string token, string calendarID, string eventID, CancellationToken cToken, DateTime start, DateTime end) { 2 var client = GetAuthenticatedClient(token); 3 var @event = new Event { 4 Start = DateTimeTimeZone.FromDateTime(start), 5 End = DateTimeTimeZone.FromDateTime(end), 6 }; 7 Event retval = null; 8 try { 9 retval = await client.Me.Calendars[calendarID].Events[eventID].Request().UpdateAsync(@event, cToken); 10 cToken.ThrowIfCancellationRequested(); 11 } 12 catch(Exception ex) { 13 System.Diagnostics.Debug.WriteLine("PatchHttpContentWithTokenAsync canceled : " + ex.Message); 14 throw; 15 } 16 return retval; 17 }
【現在できること】
予定表時刻の更新(UTC標準)
【現在できないこと】
1. タイムゾーンを使用しないで時刻を更新する
上記コードで試しに終了時刻を更新すると、outlookでは、下記画像のように表示されます。
タイムゾーンを大阪、札幌、東京へ手動に戻せば、指定した時間で更新できていることは確認できました。
しかし、タイムゾーンを利用しないまたはせめて日本時刻にしたいです。
2. UpdateAsync実行後、応答が無い
現在は、CancellationTokenをはさみ、PatchHttpContentWithTokenAsync中、別タスクから対象Eventを監視し、
元EVENTからの差分を見て、更新があれば、タスクのキャンセルのように処理を行っております。
これで現在は動いているのでいいのですが、本当にこの使い方があっているのかどうかよくわかりません。
本来であれば、更新後のEVENTを取得できるはずなのですが・・・
【1. 試したこと】
・OriginalStartTimeZone、OriginalEndTimeZoneへ"Tokyo Standard Time"や"Asia/Tokyo"と代入した
⇒ 変わらず
・await client.Me.Calendars[calendarID].Events[eventID].Request("Prefer: outlook.timezone="Central Standard Time"")...に変更し、実行
⇒ 変わらず
お手数をおかけしますが、ご教授願います。
よろしくお願いします。
~~開発環境~~
Visual Studio 2019
Microsoft.Graph 3.0.1
あなたの回答
tips
プレビュー