创建现有项目的完整副本,并可配置要包含的选项。
复制项目
复制项目变更允许您在同一公司内或向不同公司复制现有项目。这对于创建项目模板、设置类似项目或在公司之间移动项目非常有用。复制操作是异步运行的,以高效处理大型项目。
基本示例
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
高级示例
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "Q2 Marketing Campaign"
description: "Copy of Q1 campaign with updated timeline"
imageURL: "https://example.com/campaign-logo.png"
companyId: "comp_789xyz"
options: {
assignees: true
automations: true
checklists: true
customFields: true
discussions: false
discussionComments: false
dueDates: true
files: true
forms: true
people: true
projectUserRoles: true
statusUpdates: false
statusUpdateComments: false
tags: true
todoActions: true
todoComments: false
todoLists: true
todos: true
}
}
)
}
输入参数
CopyProjectInput
参数 | 类型 | 必需 | 描述 |
---|---|---|---|
projectId |
String! | ✅ 是 | 要复制的项目的 ID |
name |
String! | ✅ 是 | 新项目的名称(最多 50 个字符) |
description |
String | 否 | 新项目的描述(最多 500 个字符) |
imageURL |
String | 否 | 新项目的图片 URL |
companyId |
String | 否 | 新项目应创建的公司 ID。如果未提供,则使用源项目的公司 |
options |
CopyProjectOptionsInput! | ✅ 是 | 要复制的元素的配置 |
CopyProjectOptionsInput
参数 | 类型 | 必需 | 描述 |
---|---|---|---|
assignees |
Boolean | 否 | 复制任务分配者(需要 people: true ) |
automations |
Boolean | 否 | 复制项目自动化和工作流 |
checklists |
Boolean | 否 | 复制任务检查清单 |
customFields |
Boolean | 否 | 复制自定义字段定义和值 |
discussions |
Boolean | 否 | 复制项目讨论 |
discussionComments |
Boolean | 否 | 复制讨论中的评论(需要 discussions: true ) |
dueDates |
Boolean | 否 | 复制任务的截止日期 |
files |
Boolean | 否 | 复制文件附件 |
forms |
Boolean | 否 | 复制项目表单 |
people |
Boolean | 否 | 复制项目成员 |
projectUserRoles |
Boolean | 否 | 复制用户角色和权限(需要 people: true ) |
statusUpdates |
Boolean | 否 | 复制项目状态更新 |
statusUpdateComments |
Boolean | 否 | 复制状态更新中的评论(需要 statusUpdates: true ) |
tags |
Boolean | 否 | 复制项目标签 |
todoActions |
Boolean | 否 | 复制任务操作/子任务 |
todoComments |
Boolean | 否 | 复制任务评论 |
todoLists |
Boolean | 否 | 复制任务列表/部分 |
todos |
Boolean | 否 | 复制任务 |
coverConfig |
Boolean | 否 | 复制待办封面图像配置 |
响应
该变更返回一个 Boolean
值:
true
- 复制作业已成功排队false
- 复制作业无法启动
检查复制状态
由于复制是异步的,请使用 copyProjectStatus
查询检查进度:
复制状态字段
字段 | 类型 | 描述 |
---|---|---|
queuePosition |
Int | 复制队列中的位置 |
totalQueues |
Int | 队列中的总项目数 |
isActive |
Boolean | 复制操作是否当前处于活动状态 |
oldProject |
Project | 正在复制的源项目 |
newProjectName |
String | 正在创建的新项目的名称 |
isTemplate |
Boolean | 这是否是作为模板复制 |
oldCompany |
Company | 源公司 |
newCompany |
Company | 目标公司 |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
所需权限
要复制项目,您需要在源位置和目标位置具有适当的权限:
场景 | 所需权限 |
---|---|
Copy within same company | OWNER , ADMIN , or MEMBER role in the source project |
Copy to different company | • OWNER , ADMIN , or MEMBER role in the source project• Must be a member of the target company |
源项目必须处于活动状态(未归档)才能被复制。
错误响应
项目未找到
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
当源项目不存在或您没有访问权限时发生。
公司未找到
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
当目标公司不存在或您没有访问权限时发生。
项目过大
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
当项目的任务超过 250,000 个时发生。
复制已在进行中
{
"errors": [{
"message": "Oops!"
}]
}
当您已经有一个复制操作正在进行时发生。
重要说明
- 异步操作:该变更排队一个后台作业并立即返回。使用
copyProjectStatus
跟踪进度。 - 一次复制:每个用户只能有一个复制操作处于活动状态。
- 大小限制:超过 250,000 个任务的项目无法复制。
- 逻辑依赖:某些选项最好一起使用:
assignees
与people: true
一起使用(没有人员时不会复制分配者)discussionComments
与discussions: true
一起使用statusUpdateComments
与statusUpdates: true
一起使用projectUserRoles
与people: true
一起使用
- 名称处理:项目名称会被修剪,任何 URL 会被自动移除。
- 队列优先级:企业客户在复制队列中享有更高的优先级。
- 状态缓存:复制状态在完成后缓存 6 小时。