For å demonstrere hvordan skripting fungerer i Workiva, har vi tidligere laget et -skript som oppdaterer en celle i et regneark. Denne artikkelen bygger videre på dette eksemplet ved å demonstrere hvordan du utfører den samme operasjonen ved hjelp av tokenbasert autentisering.
Merk: Skripting er for øyeblikket bare tilgjengelig gjennom Customize Workiva. Lær mer om dette.
Krav
- Workiva Scripting må være aktivert for arbeidsområdet ditt. Finn ut mer om Workiva Scripting.
- Rollen Script Editor er nødvendig for å opprette eller redigere skript.
Trinn 1: Opprett en skriptfil
Dette skriptet er en variant av skriptet som ble brukt i vår Sample: Skript for å oppdatere regneark artikkel. Denne versjonen beskytter klient-ID og klienthemmelighet, og innhenter i stedet et token som gjør det mulig for koden å autentisere seg i Workiva.
Følg disse trinnene for å bygge skriptet i arbeidsområdet ditt:
- Fra Hjem klikker du på + Opprett => Script.
- På høyre side skriver du inn et navn og en kort beskrivelse av skriptet.
- Gå til skriptredigeringsprogrammet i midten av skjermen, og slett all eksisterende kode. Kopier og lim inn følgende:
# Velkommen til 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() - Klikk på Lagre.
Trinn 2: Generer avhengigheter på din lokale maskin
Når du arbeider deg gjennom denne delen, vil du legge merke til at denne varianten ikke inneholder noen kode for å generere et token basert på klient-ID og klienthemmelighet. I stedet abstraheres koden til et lokalt opprettet bibliotek med navnet WorkivaAuth, og pakkes deretter inn i dependencies.zip -pakken sammen med forespørselsbiblioteket.
For å følge med, åpne terminalen på din lokale maskin og utfør disse trinnene:
- Opprett en mappe med navnet Creds.
mkdir Creds
- Gå inn i mappen Creds.
cd Creds
- Opprett en requirements.txt fil med følgende innhold:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Opprett en mappe med navnet WorkivaAuth.
mkdir WorkivaAuth
- Gå inn i mappen WorkivaAuth.
cd WorkivaAuth
- I WorkivaAuth-mappen oppretter du en setup.py -fil med følgende innhold:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- I WorkivaAuth-mappen oppretter du en ny mappe med navnet WorkivaAuth.
mkdir WorkivaAuth
Merk: Dette er ikke en skrivefeil. Den riktige banen er ./WorkivaAuth/WorkivaAuth.
- Gå inn i mappen WorkivaAuth som du nettopp opprettet.
cd WorkivaAuth
- Opprett en tom __init__.py fil og en WorkivaAuth.py fil i WorkivaAuth/WorkivaAuth mappen med følgende innhold:
# WorkivaAuth import requests import json # Erstatt med den faktiske URL'en AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Definer den manglende variabelen CLIENT_ID CLIENT_ID = "your_client_id" # Definer den manglende variabelen CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Erstatt med de riktige overskriftene 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']Du bør nå ha følgende mappestruktur:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt
-
Gå tilbake til mappen Creds.
cd ..
cd ..
- Kjør følgende kommandoer for å generere din WorkivaAuth distribusjonspakke.
cd WorkivaAuth
python3 setup.py sdist
cd ...
- Installer avhengigheten i en ny katalog Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Opprett en dependencies.zip fil.
cd dependencies
zip -r ../dependencies.zip .
cd ...
I siste del av denne artikkelen skal vi vise deg hvordan du laster opp denne filen til skriptet som ble opprettet i Trinn 1.
Trinn 3: Last opp avhengigheter til Workiva
Nå som du har opprettet avhengighetsfilen, går du tilbake til Workiva og laster den opp som kilde.
- Gå til Workiva Scripting og åpne skriptfilen du opprettet tidligere i denne artikkelen.
- Gå til Kilder -panelet på venstre side; høyreklikk i det tomme feltet rett under den aktuelle filen, og velg Last opp kildefiler.
- Velg Bla gjennom, og finn dependencies.zip -filen du opprettet i forrige trinn.
- Last opp filen dependencies.zip for å fullføre.
Du bør se en ikke-valgbar kilde med navnet dependencies.zip, noe som indikerer at du nå er klar til å autentisere deg i Workiva uten å eksponere noen legitimasjon!