创建现有项目的完整副本,并可配置要包含的选项。
复制项目
复制项目变更允许您在同一公司内或向不同公司复制现有项目。这对于创建项目模板、设置类似项目或在公司之间移动项目非常有用。复制操作是异步运行的,以高效处理大型项目。
基本示例
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 小时。