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.
Merknad : Skripting er for øyeblikket bare tilgjengelig via Tilpass Workiva. Lær mer.
Krav
- Workiva-skripting må være aktivert for arbeidsområdet ditt. Lær mer om Workiva-skripting.
-
Rollen Skriptredigerer er nødvendig for å opprette eller redigere skript.
Trinn 1: Opprett en skriptfil
Dette skriptet er en variant av det som brukes i artikkelen vår Eksempel: Skript for å oppdatere regneark . Denne versjonen beskytter klient-ID-en og klienthemmeligheten, og henter i stedet et token som lar koden autentiseres i Workiva.
For å bygge skriptet i arbeidsområdet ditt, følg disse trinnene:
- Fra Hjem, klikk på + Opprett => Skript .
- På høyre side skriver du inn et navn og en kort beskrivelse av skriptet.
-
Gå til skripteditoren midt på 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 updatesSS(outputSSApi: SSApi): values = [] values.append(["Hei verden"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS oppdatert!!!") main() - Klikk på Lagre.
Trinn 2: Generer avhengigheter på den lokale maskinen din
Når du jobber deg gjennom denne delen, vil du legge merke til at denne varianten ikke inkluderer noen kode for å generere et token basert på klient-ID og klienthemmelighet. Koden blir snarere abstrahert til et lokalt opprettet bibliotek kalt WorkivaAuth og deretter pakket inn i dependencies.zip -pakken sammen med forespørselsbiblioteket.
For å følge med, åpne terminalen på din lokale maskin og fullfør disse trinnene:
-
Opprett en mappe med navnet Creds .
mkdir-kreditter -
Gå inn i Creds -mappen.
CD-kreditter -
Opprett en requirements.txt -fil med følgende innhold:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz forespørsler==2.29.0 -
Opprett en mappe med navnet WorkivaAuth .
mkdir WorkivaAuth -
Gå inn i WorkivaAuth -mappen.
cd WorkivaAuth -
I WorkivaAuth-mappen oppretter du en setup.py -fil med følgende innhold:
fra setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'forespørsler' ] ) -
I WorkivaAuth-mappen oppretter du en annen mappe med navnet WorkivaAuth .
mkdir WorkivaAuthMerknad : Dette er ikke en skrivefeil. Den riktige stien er ./WorkivaAuth/WorkivaAuth .
-
Gå inn i WorkivaAuth -mappen du nettopp opprettet.
cd WorkivaAuth -
Opprett en tom __init__.py -fil og en WorkivaAuth.py -fil i mappen WorkivaAuth/WorkivaAuth 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 riktige overskrifter 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 skal nå ha følgende mappestruktur:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt -
Gå tilbake til Creds -mappen.
cd ..cd .. -
Kjør følgende kommandoer for å generere WorkivaAuth distribusjonspakken din.
cd WorkivaAuthpython3 setup.py sdistcd .. -
Installer avhengigheten i en ny Avhengigheter katalog.
pip3 install --target ./dependencies --requirement requirements.txt -
Opprett en dependencies.zip -fil.
cd avhengigheterzip -r ../avhengigheter.zip .cd ..
I den siste delen av denne artikkelen viser vi 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 din, går du tilbake til Workiva og laster den opp som en kilde.
- Gå til Workiva Scripting og åpne skriptfilen du opprettet tidligere i denne artikkelen .
- Gå til panelet Kilder på venstre side; høyreklikk i det tomme feltet rett under gjeldende fil, og velg Last opp kildefiler .
-
Velg Bla gjennom og finn dependencies.zip -filen du opprettet i forrige trinn.
-
Last opp dependencies.zip -filen for å fullføre.
Du bør se en ikke-valgbar kilde kalt dependencies.zip , som indikerer at du nå er klar til å autentisere i Workiva uten å eksponere noen legitimasjonsinformasjon!