既存のプロジェクトの完全なコピーを作成し、含める内容の設定オプションを提供します。
プロジェクトのコピー
コピープロジェクトミューテーションを使用すると、同じ会社内または異なる会社に既存のプロジェクトを複製できます。これは、プロジェクトテンプレートの作成、類似プロジェクトの設定、または会社間でのプロジェクトの移動に便利です。コピー操作は、大規模なプロジェクトを効率的に処理するために非同期で実行されます。
基本例
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 | いいえ | TODOカバー画像の設定をコピーする | 
レスポンス
ミューテーションは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時間キャッシュされます。