Workiva har support för både Pythons standardbibliotek och Python Package Index (PyPI). Beroenden kan genereras automatiskt med hjälp av den inbyggda skriptredigeraren eller skapas manuellt på din lokala maskin.
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.
Bibliotek som stöds
Workiva-skript har support för Pythons standardbibliotek out-of-the-box Det här biblioteket innehåller inbyggda moduler som ger åtkomst till systemfunktioner som t.ex. arkivering, samt många standardiserade lösningar på vanliga programmeringsproblem.
Förutom standardbiblioteket finns det en växande samling komponenter tillgängliga från Python Package Index. Du måste generera beroendena i ditt skript som inkluderar de PyPI-komponenter du vill använda.
En av PyPI-komponenterna som vi ofta använder är "requests"-komponenten, som låter dig interagera med Workiva-plattformen via Workiva Public APIs.
Obs: PyPI-komponenter som kräver ytterligare installationer kanske inte får support.
Skapa beroenden med skriptredigeraren
Skriptredigeraren kan automatiskt bygga dina beroenden.
Så här gör du:
- Från Home, öppna en skriptfil (eller skapa en ny).
- Gå till panelen Källor på vänster sida, högerklicka i det tomma utrymmet precis under de aktuella källorna och välj Lägg till källfil.
- Skapa en ny källa med namnet: requirements.txt.
- Lägg till en rad i mittfältet som anger vilket bibliotek och vilken version som ska installeras. (Detta är raden requests==2.28.1 i vår exempelbild).
- Klicka på Spara längst upp till vänster.
- Ladda om din skärm. Hoppa inte över det här steget!
När du har sparat och uppdaterat genererar Workiva automatiskt ett beroendepaket som heter dependencies.zip. Du kan nu använda biblioteket i din kod.
Generera beroenden från din lokala maskin
Om du vill skapa beroenden manuellt måste du bygga ett paket lokalt och ladda upp det till skriptredigeraren. Du kan t.ex. ha ett projekt som behöver åtkomst till biblioteket "requests" för att köra ett skript:
import requests print (requests.get('https://api.github.com').text) Detta kan göras using en pip-kompatibel pakethanterare:
- Definiera vilken version av biblioteket "requests" som ska vara tillgänglig i ett pip-kompatibelt format; den ska sparas som en .txt-fil:
echo requests==2.26.0 > requirements.txt
- Installera beroendet i en ny katalog Dependencies:
pip3 install --target ./dependencies --requirement requirements.txt
- Skapa en dependencies.zip fil:
cd dependencies
zip -r ../dependencies.zip .
cd .
- I ditt Workiva Scripting-projekt skapar du en tom dependencies.zip fil:
curl -k -v -X POST \
-H 'Content-type: application/x-www-form-urlencoded;charset=UTF-8' \
-d "client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&grant_type=client_credentials" \
https://api.app.wdesk.com/iam/v1/oauth2/token - För att få slutpunktens länk klickar du på Run Link i menyn högst upp i skriptredigeraren:
curl -X POST https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files \
Du bör få följande svar. Du kan hämta filens id därifrån.
-H "Content-Type: application/json" -H "Authorization: Bearer $BEARER_TOKEN" \
-d '{"path":"dependencies.zip"}'
{"id":"<file-id>","path":"dependencies.zip"} - För att få en lista över arkiveringarna i ditt skript gör du en GET-begäran:
curl -X GET https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files \
-H "Content-Type:application/json" \
-H "Authorization: Bearer $BEARER_TOKEN" - Ladda upp filen dependencies.zip till det nya fil-ID:t:
curl -X PUT https://h.sandbox.wdesk.com/s/scripting/v0/scripts/<script-id>/files/<file-id> \
-H "Authorization: Bearer $BEARER_TOKEN" --data-binary @dependencies.zip - För att testa biblioteket "requests" kör du ett skript med följande kod:
import requests print (requests.get('https://api.github.com').text)
VANLIGA FRÅGOR
Vilka API:er och bibliotek har support?
Workiva Scripting har för närvarande support:
- Workivas publika API:er
- Icke-Workiva API:er
- Pythons standardbibliotek
- Python Package Index (PyPI)
Support för ytterligare språk är fortfarande under övervägande och kan komma att implementeras i framtiden.
Läs mer om detta: Workiva Scripting-bibliotek och beroenden som stöds
Vilken version av Python används i Workiva Scripting?
Workiva Scripting stöder för närvarande Python 3.9 och Python 3.13, med stöd för att använda Python 3.9 som upphör i mars 2026.
Lär dig mer om detta: Migrering av skript till Python 3.13 i Workiva
Erbjuder Workiva API-klienter med populära språk som Python eller Java?
Vi tillhandahåller för närvarande inga offentliga SDK:er för Python eller Java.
Vi tillhandahåller dock öppna API-specifikationer för Workiva API:er så att du kan skapa dessa bibliotek själv. Du kan till exempel hämta Workiva Platform API:s OAS-fil och generera ett klientbibliotek.
Finns det skriptspecifika API:er tillgängliga?
Skript-API-slutpunkter är tillgängliga som prototyp-slutpunkter inom Workivas Prototype Platform API.
Hur skapar jag och visar API- beviljande för Workiva Public API:er?
Du måste skaffa ett klient-ID och en klienthemlighet genom att följa anvisningarna på här.
Hur auktoriserar jag mig till Workiva Public API:er med hjälp av Python?
Följande kodsnutt gör ett anrop till IAM-tjänsten för att generera en åtkomsttoken som sedan används för att autentisera sig till Scripting-prototypens slutpunkter. Det kommer att få en lista över alla skript som API-tillståndet (dvs. klienten) har åtkomst till i den arbetsyta där beviljandet skapades.
import requests import json import os AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" SCRIPTING_API_URL = "https://api.app.wdesk.com/prototype/platform/scripts/" CLIENT_ID = os.getenv('CLIENT_ID') CLIENT_SECRET = os.getenv('CLIENT_SECRET') tokenResponse = requests.post( AUTH_URL, data = 'client_id=' + CLIENT_ID + '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', headers = {'Content-Type': 'application/x-www-form-urlencoded; \ charset=UTF-8'}) accessToken = 'Bearer ' + json.loads(tokenResponse.text)['access_token'] dataRes = requests.get(SCRIPTING_API_URL, headers = {'Authorization': accessToken}) print(json.loads(dataRes.text))
Hur uppdaterar jag formatet för celler med Python?
Prototypändpunkten Update Sheet Content gör det möjligt att uppdatera cellernas format med hjälp av Python-kod.
Kan jag läsa/skriva eller ladda upp arkiveringar som inte finns i Workiva och som lagras i Workiva?
För närvarande finns det inga tillgängliga ändpunkter för att läsa/skriva eller ladda upp arkivering som inte är lagrad i Workiva.
Kan jag skapa och hantera automatiseringar på ett programmatiskt sätt?
För närvarande finns det inga endpoints tillgängliga för att programmatiskt skapa eller hantera automatiseringar.