如何用GraphServiceClient为组织成员分配Planner任务?
可以给其他组织成员分配Planner任务!
当然没问题啦,你只需要调整代码里的任务属性,同时确保应用权限配置到位就行,具体操作如下:
1. 确认应用权限
首先要保证你的应用拥有足够的操作权限:
- 如果是后台应用身份(无用户交互的服务模式):需要申请
Planner.ReadWrite.All或Group.ReadWrite.All权限(因为Planner计划通常绑定Microsoft 365组) - 如果是个人凭据模式(用你的身份操作):你个人需要拥有该Planner计划的编辑权限,并且能访问目标用户的基本信息
2. 修改代码实现分配
在创建PlannerTask对象时,通过AssignedToUserIds属性指定要分配的用户ID即可。这里给你一个完整的示例:
var graphClient = GetAuthenticatedClient(); // 构建待创建的任务对象 PlannerTask newTask = new PlannerTask { Title = "给同事的测试任务", PlanId = "你的计划ID", // 替换为实际计划ID BucketId = "你的存储桶ID", // 替换为你创建的bucket ID // 指定要分配的用户ID列表,支持同时分配给多个用户 AssignedToUserIds = new List<string> { "目标用户的Azure AD对象ID" // 替换为实际用户的ID }, // 可选:添加任务截止日期等其他属性 DueDateTime = DateTimeOffset.Now.AddDays(7) }; // 提交创建请求(建议用await替代Result,避免阻塞线程) var createdTask = await graphClient.Planner.Tasks.Request().AddAsync(newTask);
实用小提示
- 如何获取用户的Azure AD ID?可以通过Graph API查询用户信息:
var targetUser = await graphClient.Users.Request() .Filter("userPrincipalName eq 'target-user@your-org.com'") .Select(u => u.Id) .FirstOrDefaultAsync(); // targetUser.Id就是你需要的用户ID - 要确保目标用户是该Planner计划所属Microsoft 365组的成员,否则任务分配可能会失败(这是Planner的默认规则)
内容的提问来源于stack exchange,提问作者Niels
相关产品推荐
相关产品推荐

