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 Folgendes und fügen Sie es ein:
# Willkommen beim 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(["Hallo Welt“]) outputSSApi.updateRange('A1', {"values“: values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print(„SS aktualisiert!!!“) 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 -
Wechseln Sie in den Ordner Creds.
cd Creds -
Erstellen Sie eine Datei requirements.txt mit folgendem Inhalt:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0 -
Erstellen Sie einen Ordner namens WorkivaAuth.
mkdir WorkivaAuth -
Wechseln 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 namens WorkivaAuth.
mkdir WorkivaAuthHinweis: Dies ist kein Tippfehler. Der korrekte Pfad lautet ./WorkivaAuth/WorkivaAuth.
-
Wechseln Sie in den soeben erstellten Ordner WorkivaAuth.
cd WorkivaAuth -
Erstellen Sie eine leere Datei __init__.py und eine Datei WorkivaAuth.py im Ordner WorkivaAuth/WorkivaAuth mit folgendem Inhalt:
# WorkivaAuth import requests import json # Replace with the actual URL AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Define the missing variable CLIENT_ID CLIENT_ID = "your_client_id" # Define the missing variable CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Replace with the appropriate headers 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 generieren.
cd WorkivaAuthpython3 setup.py sdistcd .. -
Installieren Sie die Abhängigkeit in ein neues Verzeichnis Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt -
Erstellen Sie eine Datei dependencies.zip.
cd dependencieszip -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!