För att visa hur skript fungerar i Workiva har vi tidigare byggt ett -skript som uppdaterar en cell i en kalkylark. Den här artikeln bygger vidare på det exemplet genom att visa hur man utför samma åtgärd med hjälp av tokenbaserad autentisering.
Obs: Scripting är för närvarande endast tillgängligt via Customize Workiva. Läs mer.
Krav
- Workiva Scripting måste vara aktiverat för din arbetsyta. Läs mer om Workiva Scripting.
- Rollen Script Editor krävs för att skapa eller redigera skript.
Steg 1: Skapa en skriptfil
Detta skript är en variant av det som används i vårt Prov: Skript för att uppdatera kalkylark artikel. Den här versionen skyddar klient-ID och klienthemlighet och erhåller istället en token som gör det möjligt för koden att autentisera sig i Workiva.
Följ dessa steg för att bygga skriptet i din arbetsyta:
- Från Home, klicka på Skapa => Skript.
- På höger sida anger du ett namn och en kort beskrivning för skriptet.
-
Gå till skriptredigeraren i mitten av skärmen och radera all befintlig kod. Kopiera och klistra in följande:
# Välkommen till 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 = {'Auktorisering': 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(["Hej världen"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS uppdaterad!!!") main() - Klicka på Spara.
Steg 2: Generera beroenden på din lokala maskin
När du arbetar dig igenom det här avsnittet kommer du att märka att den här varianten inte innehåller någon kod för att generera en token baserad på klient-ID och klienthemlighet. I stället abstraheras koden till ett lokalt skapat bibliotek med namnet WorkivaAuth och packas sedan in i dependencies.zip tillsammans med request-biblioteket.
För att följa med öppnar du terminalen på din lokala maskin och genomför dessa steg:
-
Skapa en mapp med namnet Creds .
mkdir Creds -
Gå in i mappen Creds .
CD-krediter -
Skapa en requirements.txt -fil med följande innehåll:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0 -
Skapa en mapp med namnet WorkivaAuth .
mkdir WorkivaAuth -
Gå in i mappen WorkivaAuth .
cd WorkivaAuth -
I mappen WorkivaAuth, skapa en setup.py -fil med följande innehåll:
från setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'förfrågningar' ] ) -
I mappen WorkivaAuth skapar du en annan mapp med namnet WorkivaAuth .
mkdir WorkivaAuthObs : Detta är inte ett stavfel. Den korrekta sökvägen är ./WorkivaAuth/WorkivaAuth.
-
Gå in i mappen WorkivaAuth som du just skapade.
cd WorkivaAuth -
Skapa en tom __init__.py -fil och en WorkivaAuth.py -fil i mappen WorkivaAuth/WorkivaAuth med följande innehåll:
# WorkivaAuth import requests import json # Ersätt med den faktiska URL:en AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Definiera den saknade variabeln CLIENT_ID CLIENT_ID = "your_client_id" # Definiera den saknade variabeln CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Ersätt med lämpliga 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']Du bör nu ha följande mappstruktur:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- krav.txt -
Gå tillbaka till mappen Creds.
cd ..cd .. -
Kör följande kommandon för att generera ditt WorkivaAuth distributionspaket.
cd WorkivaAuthpython3 setup.py sdistcd .. -
Installera beroendet i en ny katalog Dependencies .
pip3 installera --target ./dependencies --requirement requirements.txt -
Skapa en dependencies.zip -fil.
cd beroendenzip -r ../beroenden.zip .cd ..
I den sista delen av den här artikeln visar vi dig hur du laddar upp den här filen till skriptet som skapades i Steg 1.
Steg 3: Ladda upp beroenden till Workiva
Nu när du har skapat din beroendefil återvänder du till Workiva och laddar upp den som en källa.
- Gå till Workiva Scripting och öppna den skriptfil som du skapade tidigare i den här artikeln.
- Gå till panelen Källor på vänster sida; högerklicka i det tomma utrymmet precis under den aktuella filen och välj Ladda upp källfiler .
- Välj Bläddra igenom och leta reda på filen dependencies.zip som du skapade i föregående steg.
- Ladda upp filen dependencies.zip för att slutföra.
Du bör se en icke valbar källa som heter dependencies.zip, vilket indikerar att du nu är redo att autentisera dig i Workiva utan att avslöja några referenser!