質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

0回答

709閲覧

office365 REST API Eventの更新について

kazuoni

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

1クリップ

投稿2020/04/19 01:42

現在、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問