Skip to content

用户任务清单接口 - (IFeishuUserV2TaskList)

功能描述

飞书清单可以用于组织和管理属于同一个项目的多个任务。该接口提供用户级别的任务清单管理功能,包括创建、查询、更新、删除清单以及成员管理操作,使用用户令牌进行认证。

参考文档

接口详细文档请参见:https://open.feishu.cn/document/task-v2/tasklist/overview

函数列表

函数名称功能描述认证方式HTTP 方法
CreateTaskListAsync创建任务清单用户令牌POST
GetTaskListByIdAsync获取任务清单详情用户令牌GET
UpdateTaskListByIdAsync更新任务清单用户令牌PATCH
DeleteTaskListByIdAsync删除任务清单用户令牌DELETE
AddTaskListMemberByIdAsync添加清单成员用户令牌POST
RemoveTaskListMemberByIdAsync移除清单成员用户令牌POST
GetTaskListPageListByIdAsync分页获取任务列表用户令牌GET

函数详细内容

创建任务清单

函数签名

csharp
Task<FeishuApiResult<TaskListOperationResult>?> CreateTaskListAsync(
    [Body] CreateTaskListRequest createTaskListRequest,
    [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • createTaskListRequest (CreateTaskListRequest) - 创建任务列表请求体
    • name (string) - 清单名称,必填。最多100个字符。示例值:"个人项目任务清单"
    • members (TaskMember[]) - 清单的成员列表
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "tasklist": {
      "guid": "cc371766-6584-cf50-a222-c22cd9055004",
      "name": "个人项目任务清单",
      "creator": {
        "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
        "type": "user",
        "role": "assignee"
      },
      "owner": {
        "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
        "type": "user",
        "role": "assignee"
      },
      "members": [],
      "url": "https://applink.feishu.cn/client/todo/task_list?guid=b45b360f-1961-4058-b338-7f50c96e1b52",
      "created_at": "1675742789470",
      "updated_at": "1675742789470"
    }
  }
}

说明:使用用户令牌创建任务清单,创建时必须填写清单的名字,同时可以设置通过members字段设置清单的协作成员。用户只能创建自己拥有权限的清单。

代码示例

typescript
// 用户创建个人任务清单
const createPersonalTaskList = async () => {
  const request = {
    name: "个人学习计划清单",
    members: [
      {
        id: "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
        type: "user",
        "role": "assignee"
      }
    ]
  };
  
  const response = await feishuUserClient.createTaskList(request);
  console.log("创建成功:", response.data.tasklist);
};

获取任务清单详情

函数签名

csharp
Task<FeishuApiResult<TaskListOperationResult>?> GetTaskListByIdAsync(
    [Path] string tasklist_guid,
    [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"d300a75f-c56a-4be9-80d1-e47653028ceb"
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "tasklist": {
      "guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
      "name": "个人学习计划清单",
      "creator": {
        "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
        "name": "张明德(明德)",
        "type": "user",
        "role": "assignee"
      },
      "owner": {
        "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
        "name": "张明德(明德)",
        "type": "user",
        "role": "assignee"
      },
      "members": [
        {
          "id": "ou_5bc2d0b248e93059316a4d5f2b9e5f57",
          "name": "李华",
          "type": "user",
          "role": "assignee"
        }
      ],
      "url": "https://applink.feishu.cn/client/todo/task_list?guid=d300a75f-c56a-4be9-80d1-e47653028ceb",
      "created_at": "1675742789470",
      "updated_at": "1675742789470"
    }
  }
}

说明:用户只能获取自己有权限访问的任务清单详情,包括清单名,所有者,清单成员等。

代码示例

typescript
// 用户获取个人任务清单详情
const getPersonalTaskList = async (taskListGuid: string) => {
  const response = await feishuUserClient.getTaskListById(taskListGuid);
  console.log("清单详情:", response.data.tasklist);
  return response.data.tasklist;
};

更新任务清单

函数签名

csharp
Task<FeishuApiResult<TaskListOperationResult>?> UpdateTaskListByIdAsync(
    [Path] string tasklist_guid,
    [Body] UpdateTaskListRequest updateTaskListRequest,
    [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"d300a75f-c56a-4be9-80d1-e47653028ceb"
  • updateTaskListRequest (UpdateTaskListRequest) - 更新任务列表请求体
    • tasklist (TaskListData) - 要更新清单的数据
      • name (string) - 清单名称,最多100个字符。示例值:"个人项目任务清单"
      • members (TaskMember[]) - 清单的成员列表
    • update_fields (string[]) - 要更新的字段名,可选值:["name", "owner"]
    • origin_owner_to_role (string) - 原所有者角色,可选值:["editor", "viewer", "none"]。默认值:"none"
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "tasklist": {
      "guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
      "name": "更新后的个人学习计划",
      "owner": {
        "id": "ou_5bc2d0b248e93059316a4d5f2b9e5f57",
        "type": "user",
        "role": "assignee"
      },
      "created_at": "1675742789470",
      "updated_at": "1675742789470"
    }
  }
}

说明:用户只能更新自己有权限的任务清单。更新清单时,将update_fields字段中填写所有要修改的清单字段名,同时在tasklist字段中填写要修改的字段的新值即可。

代码示例

typescript
// 用户更新个人任务清单名称
const updatePersonalTaskList = async (taskListGuid: string) => {
  const request = {
    tasklist: {
      name: "更新后的个人学习计划清单"
    },
    update_fields: ["name"]
  };
  
  const response = await feishuUserClient.updateTaskListById(taskListGuid, request);
  console.log("更新成功:", response.data.tasklist);
};

删除任务清单

函数签名

csharp
Task<FeishuNullDataApiResult?> DeleteTaskListByIdAsync(
    [Path] string tasklist_guid,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"d300a75f-c56a-4be9-80d1-e47653028ceb"

响应

json
{
  "code": 0,
  "msg": "success"
}

说明:用户只能删除自己拥有权限的任务清单。删除清单后,不可对该清单做任何操作,也无法再访问到清单。清单被删除后不可恢复。

代码示例

typescript
// 用户删除个人任务清单
const deletePersonalTaskList = async (taskListGuid: string) => {
  const response = await feishuUserClient.deleteTaskListById(taskListGuid);
  if (response.code === 0) {
    console.log("删除成功");
  }
};

添加清单成员

函数签名

csharp
Task<FeishuApiResult<TaskListOperationResult>?> AddTaskListMemberByIdAsync(
   [Path] string tasklist_guid,
   [Body] AddTaskListMemberRequest addTaskListMemberRequest,
   [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
   CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"d300a75f-c56a-4be9-80d1-e47653028ceb"
  • addTaskListMemberRequest (AddTaskListMemberRequest) - 添加清单成员请求体
    • members (TaskMember[]) - 要添加的成员列表
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "tasklist": {
      "guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
      "name": "个人学习计划清单",
      "members": [
        {
          "id": "ou_5bc2d0b248e93059316a4d5f2b9e5f57",
          "type": "user",
          "role": "assignee"
        },
        {
          "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
          "type": "user",
          "role": "assignee"
        }
      ]
    }
  }
}

说明:用户只能向自己有管理权限的任务清单添加成员。向一个清单添加1个或多个协作成员。成员信息通过设置members字段实现。

代码示例

typescript
// 用户向个人清单添加成员
const addPersonalTaskListMembers = async (taskListGuid: string) => {
  const request = {
    members: [
      {
        id: "ou_5bc2d0b248e93059316a4d5f2b9e5f57",
        type: "user",
        role: "assignee"
      },
      {
        id: "ou_8d7a3f5e6b9c4d2e9f0a1b2c3d4e5f6g",
        type: "user",
        role: "follower"
      }
    ]
  };
  
  const response = await feishuUserClient.addTaskListMemberById(taskListGuid, request);
  console.log("添加成员成功:", response.data.tasklist.members);
};

移除清单成员

函数签名

csharp
Task<FeishuApiResult<TaskListOperationResult>?> RemoveTaskListMemberByIdAsync(
    [Path] string tasklist_guid,
    [Body] RemoveTaskListMemberRequest removeTaskListMemberRequest,
    [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"d300a75f-c56a-4be9-80d1-e47653028ceb"
  • removeTaskListMemberRequest (RemoveTaskListMemberRequest) - 移除清单成员请求体
    • members (TaskMember[]) - 要移除的成员列表
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "tasklist": {
      "guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
      "name": "个人学习计划清单",
      "members": [
        {
          "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
          "type": "user",
          "role": "assignee"
        }
      ]
    }
  }
}

说明:用户只能从自己有管理权限的任务清单移除成员。移除清单的一个或多个协作成员。通过设置members字段表示要移除的成员信息。

代码示例

typescript
// 用户从个人清单移除成员
const removePersonalTaskListMembers = async (taskListGuid: string) => {
  const request = {
    members: [
      {
        id: "ou_5bc2d0b248e93059316a4d5f2b9e5f57",
        type: "user",
        "role": "assignee"
      }
    ]
  };
  
  const response = await feishuUserClient.removeTaskListMemberById(taskListGuid, request);
  console.log("移除成员成功:", response.data.tasklist.members);
};

分页获取任务列表

函数签名

csharp
Task<FeishuApiPageListResult<TaskSummary>?> GetTaskListPageListByIdAsync(
    [Path] string tasklist_guid,
    [Query("page_size")] int page_size = 10,
    [Query("page_token")] string? page_token = null,
    [Query("completed")] bool? completed = null,
    [Query("created_from")] string? created_from = null,
    [Query("created_to")] string? created_to = null,
    [Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

  • tasklist_guid (string) - 任务清单全局唯一GUID。示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
  • page_size (int) - 分页大小,即本次请求所返回的用户信息列表内的最大条目数。默认值:10
  • page_token (string) - 分页标记,第一次请求不填,表示从头开始遍历
  • completed (bool) - 特定完成状态的任务,填写"true"表示返回已经完成的任务;"false"表示只返回未完成的任务;不填写表示不按完成状态过滤
  • created_from (string) - 任务创建的起始时间戳(ms),闭区间。示例值:1675742789470
  • created_to (string) - 任务创建的结束时间戳(ms),闭区间。示例值:1675742789470
  • user_id_type (string) - 用户 ID 类型,需要与查询参数中的 user_id_type 类型保持一致。默认值:"open_id"

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "items": [
      {
        "guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
        "summary": "完成JavaScript学习",
        "completed_at": "1675742789470",
        "start": {
          "timestamp": "1675454764000",
          "is_all_day": false
        },
        "due": {
          "timestamp": "1675742789470",
          "is_all_day": true
        },
        "members": [
          {
            "id": "ou_2cefb2f014f8d0c6c2d2eb7bafb0e54f",
            "name": "张明德(明德)",
            "type": "user",
            "role": "assignee"
          }
        ],
        "subtask_count": 3
      }
    ],
    "page_token": "next_page_token_value",
    "has_more": true
  }
}

说明:用户只能获取自己有权限访问的任务清单中的任务列表。分页获取一个清单的任务列表,返回任务的摘要信息。

代码示例

typescript
// 用户分页获取个人任务列表
const getPersonalTaskList = async (taskListGuid: string) => {
  let allTasks: any[] = [];
  let pageToken: string | null = null;
  
  do {
    const response = await feishuUserClient.getTaskListPageListById(taskListGuid, {
      page_size: 20,
      page_token: pageToken,
      completed: false, // 只获取未完成的任务
      created_from: "1675742789470",
      created_to: "1675742789470"
    });
    
    allTasks = allTasks.concat(response.data.items);
    pageToken = response.data.has_more ? response.data.page_token : null;
  } while (pageToken);
  
  console.log("获取到的个人任务列表:", allTasks);
  return allTasks;
};