最近、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 アカウント) でサインイン
結構、いろいろな権限を求められます。
今回使いたいタスクについても "Create, read, update and delete your tasks and projects (preview)" となっているので、このまま承諾します。
最初から表示されている自分のプロファイルを表示するサンプルクエリを実行してみるのですが、要求は成功するものの、結果が表示されません。
ブラウザを変えたりしてもダメだったので、英語版に切り替え (URL の ja-jp を en-us に切り替え) て実行してみるとあっさり成功しました。なんてこった...。
他にも、GET や POST などのメソッドの切り替えや、v0.1, beta といったバージョンの切り替えなどもできるようです。日本語版頑張れ。
タスクの取得
タスクはプレビュー扱いだったので、ドキュメントのベータ参照の項から Outlook のタスクを探します。
どうやら /outlook/tasks 以下にいろいろとあるようですね。
早速、Graph エクスプローラーを beta に切り替えて https://graph.microsoft.com/beta/me/outlook/tasks を GET してみます。
これだけで、タスクの一覧が JSON で返って来ました。
内容を見てみると、期限などのタイムゾーンが UTC として表示されています。これについてはリクエストヘッダに Prefer: outlook.timezone="Tokyo Standard Time" を追加することでタイムゾーンの指定ができるようです。
"JST" や "Japan Standard Time" ではなかったので、少し悩みました。
タスクの登録
登録は同じ URL に対して JSON を POST します。先ほど取得した内容を参考にタイトルと期限だけを指定してみました。
{ "subject": "散髪に行く", "dueDateTime": { "dateTime": "2017-05-28T00:00:00.0000000", "timeZone": "Tokyo Standard Time" }, }
登録成功後に一般的なスマートフォンを開くとこの通り。お手軽ですね。
*1:但しアプリからのみ