kazuakix の日記

Windows Phone とか好きです

Microsoft Graph でタスクを登録してみる

 最近、Office 365 アカウントで Microsoft To-Do が使えるようになった *1 ので、Outlook のタスクにいろいろ予定を入れているんですが、せっかくなので Microsoft Graph を使って API 経由での登録を試してみました。

Microsoft Graph について

 Microsoft Graph の概要を読むと、「Microsoft Graph は 1 つのエンドポイントを介して複数の API を Office 365 およびその他の Microsoft クラウド サービスから公開するもの」と紹介されています。
 

Graph エクスプローラーを試してみる

 まずは Graph エクスプローラー を使って Web から API を叩いてみます。

 developer.microsoft.com/ja-jp/graph/graph-explorer にアクセスして、Office 365 アカウント (または Microsoft アカウント) でサインイン

f:id:kazuakix:20170527112055p:plain
 

 結構、いろいろな権限を求められます。
f:id:kazuakix:20170527112411p:plain:w320
 今回使いたいタスクについても "Create, read, update and delete your tasks and projects (preview)" となっているので、このまま承諾します。
 

 最初から表示されている自分のプロファイルを表示するサンプルクエリを実行してみるのですが、要求は成功するものの、結果が表示されません。

f:id:kazuakix:20170527113035p:plain

 ブラウザを変えたりしてもダメだったので、英語版に切り替え (URL の ja-jp を en-us に切り替え) て実行してみるとあっさり成功しました。なんてこった...。

f:id:kazuakix:20170527113358p:plain

 他にも、GET や POST などのメソッドの切り替えや、v0.1, beta といったバージョンの切り替えなどもできるようです。日本語版頑張れ。
 

タスクの取得

 タスクはプレビュー扱いだったので、ドキュメントベータ参照の項から Outlook のタスクを探します。

f:id:kazuakix:20170527114857p:plain

 どうやら /outlook/tasks 以下にいろいろとあるようですね。

 早速、Graph エクスプローラーを beta に切り替えて https://graph.microsoft.com/beta/me/outlook/tasks を GET してみます。

f:id:kazuakix:20170527115304p:plain

これだけで、タスクの一覧が JSON で返って来ました。
 
 内容を見てみると、期限などのタイムゾーンが UTC として表示されています。これについてはリクエストヘッダに Prefer: outlook.timezone="Tokyo Standard Time" を追加することでタイムゾーンの指定ができるようです。

f:id:kazuakix:20170527115740p:plain
"JST" や "Japan Standard Time" ではなかったので、少し悩みました。
 

タスクの登録

 登録は同じ URL に対して JSON を POST します。先ほど取得した内容を参考にタイトルと期限だけを指定してみました。

{
    "subject": "散髪に行く",
    "dueDateTime": {
        "dateTime": "2017-05-28T00:00:00.0000000",
        "timeZone": "Tokyo Standard Time"
    },
}

f:id:kazuakix:20170527124747p:plain
 

登録成功後に一般的なスマートフォンを開くとこの通り。お手軽ですね。

f:id:kazuakix:20170527131555p:plain
 

*1:但しアプリからのみ