You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Microsoft Graph API的.NET SDK创建带描述的PlannerTask

使用Microsoft Graph .NET SDK创建带描述的PlannerTask

兄弟,我之前刚踩过这个坑!确实用Microsoft Graph .NET SDK创建带描述的PlannerTask没法一步到位,因为描述存在关联的PlannerTaskDetails对象里,而这个对象在任务创建阶段是只读状态,必须分两次调用处理,而且更新Details的时候还得用上ETag,不然肯定会触发乐观并发的报错。

下面是具体的实现步骤和代码示例,亲测可用:

步骤1:创建基础的PlannerTask

首先先创建一个不带描述的任务,拿到任务的ID:

var plannerTask = new PlannerTask
{
    Title = "完成项目文档整理",
    BucketId = "你的BucketID",
    PlanId = "你的PlanID"
};

var createdTask = await graphClient.Planner.Tasks
    .Request()
    .AddAsync(plannerTask);

步骤2:获取任务关联的PlannerTaskDetails

刚创建的任务会自动生成对应的TaskDetails对象,我们需要先获取它,拿到关键的ETag值(这是后续更新的必填项):

var taskDetails = await graphClient.Planner.Tasks[createdTask.Id].Details
    .Request()
    .GetAsync();

步骤3:更新PlannerTaskDetails添加描述

用PATCH方法更新Details,记得在请求头里带上刚才拿到的ETag,确保更新的是最新版本的Details:

var updatedDetails = new PlannerTaskDetails
{
    Description = "需要整理项目的需求文档、API文档和部署手册,完成后同步到SharePoint文档库"
};

await graphClient.Planner.Tasks[createdTask.Id].Details
    .Request()
    .Header("If-Match", taskDetails.GetEtag())
    .PatchAsync(updatedDetails);

额外注意点

  • 为什么必须用ETag?Planner采用乐观并发控制,ETag用来验证你要更新的对象是最新状态,避免多人同时更新导致数据冲突
  • 能不能一步完成?目前Graph API暂时不支持创建任务时同时写入TaskDetails,所以必须分步骤执行
  • 想减少网络请求?可以用Graph的批量请求(Batch Request)把这几个操作打包发送,不过逻辑上还是分三步处理,只是合并了网络请求

内容的提问来源于stack exchange,提问作者user310988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:50:36