Um zu demonstrieren, wie Skripting in Workiva funktioniert, haben wir zuvor ein Skript erstellt, das eine Zelle in einer Tabellenkalkulation aktualisiert. Dieser Artikel baut auf diesem Beispiel auf und zeigt, wie derselbe Vorgang mit einer tokenbasierten Authentifizierung durchgeführt werden kann.
Hinweis: Scripting ist derzeit nur über Customize Workiva verfügbar. Erfahren Sie mehr.
Anforderungen
- Workiva Scripting muss für Ihren Arbeitsbereich aktiviert sein. Erfahren Sie mehr über Workiva Scripting.
- Die Rolle Script Editor ist erforderlich, um Scripts zu erstellen oder zu bearbeiten.
Schritt 1: Erstellen einer Skriptdatei
Dieses Skript ist eine Variation des Skripts, das in unserem Sample: Skript zur Aktualisierung von Tabellenkalkulationen Artikel. Diese Version schützt die Client-ID und das Client-Geheimnis und erhält stattdessen ein Token, mit dem sich der Code bei Workiva authentifizieren kann.
Um das Skript in Ihrem Arbeitsbereich zu erstellen, gehen Sie folgendermaßen vor:
- Von der Startseite aus klicken Sie auf Erstellen => Skript.
- Geben Sie auf der rechten Seite einen Namen und eine kurze Beschreibung für das Skript ein.
- Gehen Sie in den Skript-Editor in der Mitte des Bildschirms und löschen Sie den vorhandenen Code. Kopieren Sie den folgenden Text und fügen Sie ihn ein:
# Willkommen bei Workiva Scripting import requests import json import os from WorkivaAuth import WorkivaAuth OUTPUT_SS_ID = os.getenv('OUTPUT_SS_ID') OUTPUT_SHEET_ID = os.getenv('OUTPUT_SHEET_ID') SS_API_URL = 'https://api.app.wdesk.com/platform/v1/spreadsheets/' class SSApi: def __init__(self, accessToken, ssId, sheetId): self._accessToken = 'Bearer ' + accessToken self._headers = {'Authorization': self._accessToken} self._ssId = ssId self._sheetId = sheetId def updateRange(self, range, values): url = SS_API_URL + self._ssId + "/sheets/" + \ self._sheetId + "/values/" + range requests.put(url, headers=self._headers, data=json.dumps(values)) def updateSS(outputSSApi: SSApi): values = [] values.append(["Hello World"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS updated!!!") main() - Klicken Sie auf Speichern.
Schritt 2: Erzeugen von Abhängigkeiten auf Ihrem lokalen Rechner
Wenn Sie diesen Abschnitt durcharbeiten, werden Sie feststellen, dass diese Variante keinen Code enthält, um ein Token auf der Grundlage der Client-ID und des Client-Geheimnisses zu erzeugen. Vielmehr wird der Code in eine lokal erstellte Bibliothek mit dem Namen WorkivaAuth abstrahiert und dann in das dependencies.zip Bundle zusammen mit der Request Library gepackt.
Öffnen Sie dazu das Terminal auf Ihrem lokalen Rechner und führen Sie die folgenden Schritte aus:
- Erstellen Sie einen Ordner namens Creds.
mkdir Creds
- Gehen Sie in den Ordner Creds.
cd Creds
- Erstelle eine requirements.txt Datei mit dem folgenden Inhalt:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Erstellen Sie einen Ordner mit dem Namen WorkivaAuth.
mkdir WorkivaAuth
- Gehen Sie in den Ordner WorkivaAuth.
cd WorkivaAuth
- Erstellen Sie im Ordner WorkivaAuth eine Datei setup.py mit folgendem Inhalt:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- Erstellen Sie im Ordner WorkivaAuth einen weiteren Ordner mit dem Namen WorkivaAuth.
mkdir WorkivaAuth
Hinweis: Dies ist kein Tippfehler. Der korrekte Pfad lautet ./WorkivaAuth/WorkivaAuth.
- Wechseln Sie in den Ordner WorkivaAuth, den Sie gerade erstellt haben.
cd WorkivaAuth
- Erstellen Sie eine leere __init__.py Datei und eine WorkivaAuth.py Datei im WorkivaAuth/WorkivaAuth Ordner mit folgendem Inhalt:
# WorkivaAuth import requests import json # Ersetzen Sie durch die aktuelle URL AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Definiere die fehlende Variable CLIENT_ID CLIENT_ID = "your_client_id" # Definiere die fehlende Variable CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Ersetzen durch die entsprechenden Header headers = { 'Content-Type': 'application/x-www-form-urlencoded', } tokenRes = requests.post( AUTH_URL, data=data, headers=headers ) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token']Sie sollten nun die folgende Ordnerstruktur haben:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt
-
Gehen Sie zurück in den Ordner Creds.
cd ..
cd ..
- Führen Sie die folgenden Befehle aus, um Ihr WorkivaAuth-Distributionspaket zu erstellen.
cd WorkivaAuth
python3 setup.py sdist
cd ...
- Installieren Sie die Abhängigkeit in ein neues Verzeichnis Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Erstellen Sie eine dependencies.zip-Datei.
cd dependencies
zip -r ../dependencies.zip .
cd ...
Im letzten Teil dieses Artikels zeigen wir Ihnen, wie Sie diese Datei in das Skript hochladen, das in Schritt 1 erstellt wurde.
Schritt 3: Hochladen der Abhängigkeiten in Workiva
Nachdem Sie nun Ihre Abhängigkeitsdatei erstellt haben, kehren Sie zu Workiva zurück und laden sie als Quelle hoch.
- Gehen Sie zu Workiva Skripting und öffnen Sie die Skriptdatei, die Sie früher in diesem Artikel erstellt haben.
- Rufen Sie den Bereich Quellen auf der linken Seite auf; klicken Sie mit der rechten Maustaste in den leeren Bereich direkt unterhalb der aktuellen Datei und wählen Sie Quelldateien hochladen.
- Wählen Sie Durchsuchen und suchen Sie die Datei dependencies.zip, die Sie im vorherigen Schritt erstellt haben.
- Laden Sie zum Abschluss die Datei dependencies.zip hoch.
Sie sollten eine nicht auswählbare Quelle mit dem Namen dependencies.zip sehen, die Ihnen anzeigt, dass Sie nun bereit sind, sich in Workiva zu authentifizieren, ohne irgendwelche Anmeldedaten preiszugeben!