Erstellen Sie eine vollständige Kopie eines bestehenden Projekts mit konfigurierbaren Optionen für das, was einbezogen werden soll.
Projekt kopieren
Die Mutation zum Kopieren eines Projekts ermöglicht es Ihnen, ein bestehendes Projekt innerhalb desselben Unternehmens oder zu einem anderen Unternehmen zu duplizieren. Dies ist nützlich, um Projektvorlagen zu erstellen, ähnliche Projekte einzurichten oder Projekte zwischen Unternehmen zu verschieben. Der Kopiervorgang wird asynchron ausgeführt, um große Projekte effizient zu bearbeiten.
Einfaches Beispiel
mutation CopyProject {
copyProject(
input: {
projectId: "proj_123abc"
name: "New Project Copy"
options: {
todos: true
todoLists: true
people: true
}
}
)
}
Fortgeschrittenes Beispiel
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
}
}
)
}
Eingabeparameter
CopyProjectInput
Parameter | Typ | Erforderlich | Beschreibung |
---|---|---|---|
projectId |
String! | ✅ Ja | Die ID des zu kopierenden Projekts |
name |
String! | ✅ Ja | Der Name für das neue Projekt (max. 50 Zeichen) |
description |
String | Nein | Die Beschreibung für das neue Projekt (max. 500 Zeichen) |
imageURL |
String | Nein | Die Bild-URL für das neue Projekt |
companyId |
String | Nein | Die ID des Unternehmens, in dem das neue Projekt erstellt werden soll. Wenn nicht angegeben, wird das Unternehmen des Quellprojekts verwendet |
options |
CopyProjectOptionsInput! | ✅ Ja | Konfiguration, welche Elemente kopiert werden sollen |
CopyProjectOptionsInput
Parameter | Typ | Erforderlich | Beschreibung |
---|---|---|---|
assignees |
Boolean | Nein | Kopiere Aufgaben-Zuweisungen (erfordert people: true ) |
automations |
Boolean | Nein | Kopiere Projektautomatisierungen und Workflows |
checklists |
Boolean | Nein | Kopiere Aufgaben-Checklisten |
customFields |
Boolean | Nein | Kopiere benutzerdefinierte Felddefinitionen und Werte |
discussions |
Boolean | Nein | Kopiere Projektdiskussionen |
discussionComments |
Boolean | Nein | Kopiere Kommentare zu Diskussionen (erfordert discussions: true ) |
dueDates |
Boolean | Nein | Kopiere Fälligkeitstermine für Aufgaben |
files |
Boolean | Nein | Kopiere Dateianhänge |
forms |
Boolean | Nein | Kopiere Projektformulare |
people |
Boolean | Nein | Kopiere Projektmitglieder |
projectUserRoles |
Boolean | Nein | Kopiere Benutzerrollen und Berechtigungen (erfordert people: true ) |
statusUpdates |
Boolean | Nein | Kopiere Projektstatusaktualisierungen |
statusUpdateComments |
Boolean | Nein | Kopiere Kommentare zu Statusaktualisierungen (erfordert statusUpdates: true ) |
tags |
Boolean | Nein | Kopiere Projekt-Tags |
todoActions |
Boolean | Nein | Kopiere Aufgabenaktionen/Unteraufgaben |
todoComments |
Boolean | Nein | Kopiere Aufgabenkommentare |
todoLists |
Boolean | Nein | Kopiere Aufgabenlisten/Abschnitte |
todos |
Boolean | Nein | Kopiere Aufgaben |
coverConfig |
Boolean | Nein | Kopiere Konfiguration des Coverbildes für To-Dos |
Antwort
Die Mutation gibt einen Boolean
Wert zurück:
true
- Der Kopierauftrag wurde erfolgreich in die Warteschlange gestelltfalse
- Der Kopierauftrag konnte nicht gestartet werden
Überprüfen des Kopierstatus
Da das Kopieren asynchron ist, verwenden Sie die copyProjectStatus
Abfrage, um den Fortschritt zu überprüfen:
Felder des Kopierstatus
Feld | Typ | Beschreibung |
---|---|---|
queuePosition |
Int | Position in der Kopierwarteschlange |
totalQueues |
Int | Gesamtanzahl der Elemente in der Warteschlange |
isActive |
Boolean | Ob der Kopiervorgang derzeit aktiv ist |
oldProject |
Project | Das Quellprojekt, das kopiert wird |
newProjectName |
String | Name des neuen Projekts, das erstellt wird |
isTemplate |
Boolean | Ob dies als Vorlage kopiert wird |
oldCompany |
Company | Quellunternehmen |
newCompany |
Company | Zielunternehmen |
query CheckCopyStatus {
copyProjectStatus {
queuePosition
totalQueues
isActive
oldProject {
id
name
}
newProjectName
isTemplate
oldCompany {
id
name
}
newCompany {
id
name
}
}
}
Erforderliche Berechtigungen
Um ein Projekt zu kopieren, benötigen Sie die entsprechenden Berechtigungen sowohl am Quell- als auch am Zielort:
Szenario | Erforderliche Berechtigungen |
---|---|
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 |
Das Quellprojekt muss aktiv (nicht archiviert) sein, um kopiert zu werden.
Fehlerantworten
Projekt nicht gefunden
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Tritt auf, wenn das Quellprojekt nicht existiert oder Sie keinen Zugriff haben.
Unternehmen nicht gefunden
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Tritt auf, wenn das Zielunternehmen nicht existiert oder Sie keinen Zugriff haben.
Projekt zu groß
{
"errors": [{
"message": "Project is too large to copy",
"extensions": {
"code": "CREATE_PROJECT_LIMIT"
}
}]
}
Tritt auf, wenn das Projekt mehr als 250.000 Aufgaben hat.
Kopie bereits in Bearbeitung
{
"errors": [{
"message": "Oops!"
}]
}
Tritt auf, wenn Sie bereits einen Kopiervorgang in Bearbeitung haben.
Wichtige Hinweise
- Asynchroner Vorgang: Die Mutation stellt einen Hintergrundjob in die Warteschlange und gibt sofort zurück. Verwenden Sie
copyProjectStatus
, um den Fortschritt zu verfolgen. - Eine Kopie zur Zeit: Nur ein Kopiervorgang pro Benutzer kann zu einem Zeitpunkt aktiv sein.
- Größenbeschränkungen: Projekte mit mehr als 250.000 Aufgaben können nicht kopiert werden.
- Logische Abhängigkeiten: Einige Optionen funktionieren am besten zusammen:
assignees
funktioniert mitpeople: true
(Zuweisungen werden nicht kopiert, ohne Personen)discussionComments
funktioniert mitdiscussions: true
statusUpdateComments
funktioniert mitstatusUpdates: true
projectUserRoles
funktioniert mitpeople: true
- Namensverarbeitung: Projektnamen werden gekürzt und alle URLs werden automatisch entfernt.
- Warteschlangenpriorität: Unternehmenskunden erhalten eine höhere Priorität in der Kopierwarteschlange.
- Status-Caching: Der Kopierstatus wird 6 Stunden nach Abschluss zwischengespeichert.