Microsoft 365 には、個人のタスク管理アプリである Microsoft To Do の情報が TodoTaskList(タスクリスト)と TodoTask(タスク)という単位で保持されています。CData Office365 Drivers の TodoTaskLists ビュー・TodoTasks ビューを使えば、Microsoft Graph API の認証や個別のエンドポイント呼び出しを意識することなく、使い慣れた SQL でこれらのデータを取得・更新できます。タスクの棚卸しや進捗レポート作成など、BI ツールやスクリプトから直接クエリするだけで完結します。
前提条件
CData Office365 Drivers(JDBC / ODBC など)がインストール済みであること
Microsoft 365(Office 365)テナントのアカウントがあること
Azure AD アプリの登録・API アクセス許可の設定権限があること
Microsoft Graph の To Do API について
Microsoft Graph v1.0 の To Do API は、ユーザー個人の Microsoft To Do データを取得・操作するためのエンドポイントを提供します。
リソース | エンドポイント | 説明 |
|---|
タスクリスト | /me/todo/lists
| ユーザーが持つタスクリストの一覧 |
タスク | /me/todo/lists/{todoTaskListId}/tasks
| 指定したタスクリストに属するタスクの一覧 |
CData Office365 Drivers の TodoTaskLists ビュー・TodoTasks ビューはこれらの API を内部的に呼び出し、SQL でシームレスにアクセスできるように抽象化します。
設定手順
1. Azure AD アプリを登録する
To Do のデータを取得するには Azure AD アプリの登録が必要です。ドキュメントを参考にアプリを作成してください。その際、API のアクセス許可に委任されたアクセス許可として Tasks.Read(読み取りのみの場合)または Tasks.ReadWrite(更新も行う場合)を追加します。他ユーザーから共有されたTodoタスクにアクセスする場合はさらにTasks.ReadWrite.Sharedを追加してください。

2. CData Office365 Drivers の接続文字列を設定する
以下の接続文字列を参考に、対象テナントの情報を入力します。
JDBC の場合
String connectionString =
"jdbc:office365:" +
"AuthScheme=AzureAD;" +
"InitiateOAuth=GETANDREFRESH;" +
"OAuthClientId=[your_client_id];" +
"OAuthClientSecret=[your_client_secret];";
ODBC の場合(DSN)
プロパティ | 説明 |
|---|
AuthScheme | AzureAD
|
InitiateOAuth | GETANDREFRESH を指定すると初回起動時に自動でトークンを取得
|
OAuthClientId | Azure AD アプリのクライアント ID |
OAuthClientSecret | Azure AD アプリのクライアントシークレット |
3. 接続を確認する
接続が成功したら、以下の SQL でテーブル一覧を確認します。TodoTaskLists ビューと TodoTasks ビューが存在することを確認してください。
SELECT * FROM sys_tables
タスクリスト・タスクデータを取得する SQL クエリ
すべてのタスクリストを取得する
SELECT *
FROM TodoTaskLists;
主要カラム一覧(TodoTaskLists)
カラム名 | 説明 |
|---|
Id
| タスクリストの内部 ID |
DisplayName
| タスクリストの表示名(例:「仕事」「個人」) |
IsOwner
| ログインユーザーがオーナーかどうか |
IsShared
| 他のユーザーと共有されているかどうか |
WellknownListName
| 既定のリストかどうかを示す種別(defaultList 等) |
特定のタスクリストのタスクを取得する
SELECT Id, Title, Status, Importance, DueDateTime_dateTime, CompletedDateTime_dateTime
FROM TodoTasks
WHERE TodoTaskListId = '[your_task_list_id]';
主要カラム一覧(TodoTasks)
カラム名 | 説明 |
|---|
Id
| タスクの内部 ID |
Title
| タスクのタイトル |
Status
| ステータス(notStarted / inProgress / completed 等) |
Importance
| 重要度(low / normal / high) |
IsReminderOn
| リマインダーが有効かどうか |
DueDateTime_dateTime
| 期限日時 |
StartDateTime_dateTime
| 開始日時 |
CompletedDateTime_dateTime
| 完了日時 |
CreatedDateTime
| 作成日時 |
LastModifiedDateTime
| 最終更新日時 |
Categories
| カテゴリ(複数の特徴を示すラベル) |
TodoTaskListId
| 所属するタスクリストの ID |
未完了のタスクだけを絞り込む
SELECT Title, Status, Importance, DueDateTime_dateTime
FROM TodoTasks
WHERE TodoTaskListId = '[your_task_list_id]'
AND Status <> 'completed'
ORDER BY DueDateTime_dateTime ASC;
期限切れのタスクを取得する
SELECT Title, DueDateTime_dateTime, Status
FROM TodoTasks
WHERE TodoTaskListId = '[your_task_list_id]'
AND DueDateTime < CURRENT_TIMESTAMP()
AND Status <> 'completed'
ORDER BY DueDateTime_dateTime ASC;
タスクリストごとのタスク件数を集計する
SELECT l.DisplayName, COUNT(t.Id) AS TaskCount
FROM TodoTaskLists l
INNER JOIN TodoTasks t ON t.TodoTaskListId = l.Id
GROUP BY l.DisplayName
ORDER BY TaskCount DESC;
まとめ
CData Office365 Drivers の TodoTaskLists ビュー・TodoTasks ビューを使うことで、Microsoft Graph の To Do API を直接呼び出すことなく、標準 SQL を通じて Microsoft To Do のタスクリスト・タスクデータにアクセスできます。委任されたアクセス許可の設定と接続文字列の設定を済ませれば、あとは馴染みのあるクエリでタスクの一覧取得・フィルタリング・集計が可能です。個人タスクの進捗管理レポートや、他システムとのタスク連携など、さまざまなシナリオで活用してみてください。