In Pneumatic können Sie eine Workflow-Vorlage in einem Konto erstellen und dann die öffentliche API von Pneumatic verwenden, um sie “wortwörtlich” auf ein anderes Konto zu kopieren. Alles, was Sie dazu benötigen, ist der API-Schlüssel für das Quellkonto, von dem Sie eine Vorlage kopieren, und für das Zielkonto, auf das Sie die Vorlage kopieren möchten.
Betrachten wir ein Beispiel
Angenommen, wir haben eine Content Development Workflow-Vorlage in einem Konto und wir möchten sie auf ein anderes Konto kopieren.
Für unsere Zwecke werden wir Google Colab verwenden, um schnell und einfach ein Skript zusammenzustellen, das die Kopie für uns erledigt. Beginnen wir damit, zwei “dumme” Funktionen zu schreiben, eine um unsere Quellvorlage zu erhalten und die andere um eine neue Vorlage zu erstellen.
def get_template_by_id(api_key, template_id):
end_point = f"https://api.pneumatic.app/templates/{template_id}"
headers = {
'Authorization': f'Bearer {api_key}'
}
r = requests.get(end_point, headers = headers)
if r.ok:
return r.json()
else:
return None
def create_template(api_key, template_info):
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
json_data = json.dumps(template_info)
r = requests.post(
f'https://api.pneumatic.app/templates', #this is the end point
headers = headers,
data = json_data,
)
if r.ok:
return "Die Vorlage wurde dem Zielkonto hinzugefügt"
else:
return f"Etwas ist schief gelaufen: {r.content}"
Wir übergeben unsere API-Schlüssel, unsere Vorlagen-ID (für die Quellvorlage) und template_info
als Parameter. Natürlich benötigen wir für diese Funktionen die Importe von requests und json:
import requests
import json
Jetzt zum Kern der Sache
Zuerst müssen wir den API-Schlüssel des Quellkontos und die ID der Vorlage, die wir kopieren möchten, erhalten:
api_key =input("Geben Sie den API-Schlüssel der Quelle ein: ")#fragt nach dem API-Schlüssel der Quelle
template_id = int(input("Geben Sie die ID der Quellvorlage ein: "))#fragt nach der ID der Quellvorlage
Den API-Schlüssel finden Sie auf der Integrationsseite Ihres Kontos (dem Konto, von dem Sie die Vorlage kopieren möchten):
Die Vorlagen-ID ist die Nummer im Vorlagen-Link:
Sobald wir den API-Schlüssel der Quelle und die ID der Quellvorlage vom Benutzer erhalten haben, übergeben wir sie an unsere get_template_by_id
Funktion und wenn sie die Quellvorlage findet, können wir fortfahren:
source_template = get_template_by_id(api_key = api_key, template_id = template_id)
if source_template == None:
print("Keine solche Vorlage gefunden")
else:
In diesem Stadium erhalten wir den Ziel-API und die Ziel-Besitzer-ID vom Benutzer:
target_api = input("Geben Sie den Ziel-API-Schlüssel ein: ")#fragt nach dem Ziel-API-Schlüssel
target_owner = int(input("Geben Sie die Ziel-Besitzer-ID ein"))#fragt nach der Ziel-Besitzer-ID.
Auch hier können Sie den API-Schlüssel auf der Integrationsseite Ihres Zielkontos nachschlagen:
Der Besitzer ist der Benutzer, dem die Vorlagenkopie gehören wird. Gehen Sie in dem Zielkonto zur Teamseite, finden Sie den Benutzer, dem die Vorlage gehören soll, und suchen Sie deren ID:
Sobald der Ziel-API-Schlüssel und der Zielbesitzer eingegeben wurden, erstellt das Skript eine Vorlagenentwurf im Zielkonto unter Verwendung der Quellvorlage:
source_template['template_owners'].clear() #entfernt alle alten Besitzer aus der Vorlage
source_template['template_owners'].append(target_owner) #fügt den Zielbesitzer hinzu
source_template['is_active'] = False
for task in source_template['tasks']:
task['raw_performers'].clear()
result = create_template(api_key = target_api, template_info = source_template)
print(result)
Es gibt ein paar wichtige Punkte zu beachten
Zunächst einmal hat unser Zielkonto andere Benutzer als das Quellkonto, daher müssen wir das irgendwie berücksichtigen. Es gibt mehrere Möglichkeiten, diejenige, die wir in unserem Beispiel verwenden, ist vielleicht die einfachste in Bezug auf die Menge an Code, die wir schreiben müssen.
Zuerst müssen wir den Vorlagenbesitzer ändern, also bitten wir den Benutzer, die ID für den Vorlagenbesitzer im Zielkonto anzugeben, dann entfernen wir alle Besitzer aus unserer Quellvorlage und fügen die Besitzer-ID hinzu, die wir vom Benutzer erhalten haben:
source_template['template_owners'].clear() #entfernt alle alten Besitzer aus der Vorlage
source_template['template_owners'].append(target_owner) #fügt den Zielbesitzer hinzu
source_template['is_active'] = False
Jetzt für die Aufgabenausführer, wir entfernen einfach alle alten Aufgabenausführer, dieser Code geht davon aus, dass die Vorlage nach dem Kopieren “nachbearbeitet” wird, also setzt er den is_active
Status auf false
und löscht alle Ausführer. Die Vorlage wird somit im Zielkonto als Entwurf erstellt, damit jemand hineingehen und die Schritte bestimmten Benutzern zuweisen kann.
for task in source_template['tasks']:
task['raw_performers'].clear()
result = create_template(api_key = target_api, template_info = source_template)
print(result)
Alternativ können Sie auch programmatisch Ausführer hinzufügen und die Vorlage auf aktiv setzen, aber das geht über den Rahmen dieses einfachen Beispiels hinaus.
Unser Code-Beispiel erstellt eine Entwurf-Workflow-Vorlage im Zielkonto, die einen Besitzer hat, aber keine Ausführer in den Aufgaben:
Sie können den Code im Colab “wie er ist” verwenden oder ihn anpassen, um Ihren Zwecken besser zu entsprechen.