如何通过Microsoft Graph获取与Planner网页版「我的任务」一致的任务列表?
获取Planner网页版「我的任务」完整列表的方法
Planner网页版的「我的任务」实际上整合了两类任务:来自Planner计划(含私人计划)的任务,以及私人待办任务(同步自Microsoft To Do)。你调用GraphClient.Me.Planner.Tasks.GetAsync()只能拿到前者,因为私人待办不属于Planner实体范畴,需要通过To Do API单独获取后再合并结果。
步骤1:确认所需权限
应用需同时申请以下委托权限(工作/学校账户场景):
- Planner相关:
Planner.Read或Planner.ReadWrite - To Do相关:
Tasks.Read或Tasks.ReadWrite
步骤2:获取Planner计划任务
使用Planner API获取当前用户关联的所有Planner任务,可扩展获取计划和桶的信息,方便后续关联展示:
var plannerTasks = await graphClient.Me.Planner.Tasks.GetAsync(requestConfig => { requestConfig.QueryParameters.Expand = new[] { "plan", "bucket" }; });
步骤3:获取私人待办任务
私人待办任务存储在Microsoft To Do的默认「任务」列表中,先定位该列表,再获取其中的任务:
// 获取用户所有To Do列表 var todoLists = await graphClient.Me.Todo.Lists.GetAsync(); // 找到默认私人待办列表(通常名称为「任务」) var personalTodoList = todoLists.Value.FirstOrDefault(l => l.DisplayName == "任务"); List<TodoTask> personalTasks = new(); if (personalTodoList != null) { // 获取该列表下的所有任务 personalTasks = (await graphClient.Me.Todo.Lists[personalTodoList.Id].Tasks.GetAsync(requestConfig => { requestConfig.QueryParameters.Expand = new[] { "parentList" }; })).Value.ToList(); }
步骤4:合并任务列表
将Planner任务与私人待办任务合并,即可得到和网页版「我的任务」一致的完整列表,可根据需求统一处理任务状态、截止日期等字段。
内容的提问来源于stack exchange,提问作者23W
相关产品推荐
相关产品推荐

