For å demonstrere hvordan Workiva-skripting fungerer i Workiva, har vi laget et enkelt skript som oppdaterer en celle i et regneark. Du kan følge disse trinnene for å kopiere skriptet i ditt eget arbeidsområde.
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.
- API-tildelingen som brukes i dette eksemplet må ha omfanget
file:write og tilgang til målregnearket. For instruksjoner, se Workiva API-oppsett. - Du må generere avhengigheter for å kjøre dette skriptet direkte fra et regneark. Dette vil inkludere «forespørsler»-biblioteket som er nødvendig for å samhandle med Workiva Public API-ene .
Bygg skriptet
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 skriptredigeringsprogrammet midt på skjermen og slett all eksisterende kode. Kopier og lim inn følgende:
import os import time import requests AUTH_URL = "https://api.app.wdesk.com/oauth2/token" SS_API_URL = "https://api.app.wdesk.com/spreadsheets/" API_VERSION = "2026-01-01" REQUEST_TIMEOUT = 30 OPERATION_TIMEOUT = 120 CLIENT_ID = os.getenv("CLIENT_ID") CLIENT_SECRET = os.getenv("CLIENT_SECRET") SPREADSHEET_ID = os.getenv("SPREADSHEET_ID") SHEET_ID = os.getenv("SHEET_ID") HELLO_WORLD = os.getenv("HELLO_WORLD") class ApiAuth: def __init__(self): self._headers = { "Innholdstype": ... "application/x-www-form-urlencoded;charset=UTF-8", "X-Version": API_VERSION, } def getAuthToken(self): tokenRes = requests.post( AUTH_URL, data={ "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "client_credentials", }, headers=self._headers, timeout=REQUEST_TIMEOUT, ) tokenRes.raise_for_status() return tokenRes.json()["access_token"] class SSApi: def __init__(self, accessToken): self._accessToken = "Bærer " + accessToken self._ssApiUrl = ( SS_API_URL + SPREADSHEET_ID + "/sheets/" + SHEET_ID + "/values/A2:H" ) self._headers = { "Authorization": self._accessToken, "X-Version": API_VERSION, } def getRawData(self): dataRes = requests.get( self._ssApiUrl, headers=self._headers, timeout=REQUEST_TIMEOUT, ) dataRes.raise_for_status() rawData = dataRes.json() return rawData["data"][0]["values"] def waitForOperation(self, operationUrl): deadline = time.monotonic() + OPERATION_TIMEOUT while time.monotonic() < deadline: operationRes = requests.get( operationUrl, headers=self._headers, timeout=REQUEST_TIMEOUT, ) operationRes.raise_for_status() operation = operationRes.json() if operation["status"] == "fullført": return if operation["status"] == "mislyktes": raise RuntimeError( operation.get("failureReason", "Regnearkoppdatering mislyktes") ) time.sleep(float(operationRes.headers.get("Prøv igjen etter", "2"))) raise TimeoutError("Regnearkoppdateringen ble ikke fullført før tidsavbruddet") def updateRange(self, sheetId, range, values): url = ( SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + range ) print("Oppdateringsområde:", url) print("Verdier:", values) dataRes = requests.put( url, headers=self._headers, json=values, timeout=REQUEST_TIMEOUT, ) dataRes.raise_for_status() operationUrl = dataRes.headers.get("Sted") hvis ikke operationUrl: operationUrl = dataRes.json().get("operationLocation") hvis ikke operationUrl: raise RuntimeError("Regnearkoppdatering returnerte ikke en operasjons-URL") self.waitForOperation(operationUrl) def write_tier_data(ssApi): ssApi.updateRange(SHEET_ID, "A1", {"values": [[HELLO_WORLD]]}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) write_tier_data(ssApi) print("Kaller main") main() - Klikk på Lagre.
På dette tidspunktet bør du sørge for at du har generert de nødvendige avhengighetene for dette skriptet.
Kjør skriptet
Du må generere avhengigheter før du kjører dette skriptet. Avhengighetspakken inkluderer biblioteket requests som brukes til å kalle Workiva Public API-ene.
- Mens skriptet er åpent, klikker du på Kjør skript i menylinjen øverst på skjermen.
- Skriv inn parameterne som trengs for å få tilgang til regneark-API-et, regneark- og ark-ID-ene og tekstinnholdet for cellen. Klikk på Kjør skript .
Merknad : ID-ene finner du i regnearkets URL: /spreadsheet/ {spreadsheetId} /sheet/ {sheetId} .
For å bekrefte at skriptet er fullført, sjekk den oppdaterte cellen i regnearket.
Kjør skriptet direkte fra et regneark
Workiva-automatiseringer leverer regneark- og ark-ID-er gjennom miljøvariabler, men sender ikke tilpassede kjøretidsinndata. For å bruke dette skriptet med en automatisering, erstatt runtime-input-deklarasjonene i det opprinnelige skriptet. Begrens tilgangen til skriptet til autoriserte brukere fordi brukere med kildetillatelser kan se verdiene som er definert i koden.
Erstatt:
KLIENT_ID = os.getenv("KLIENT_ID") KLIENT_HEMMELIG = os.getenv("KLIENT_HEMMELIG") REGNEARK_ID = os.getenv("REGNEARK_ID") ARK_ID = os.getenv("ARK_ID") HALLO_VERDEN = os.getenv("HALLO_VERDEN")Med:
CLIENT_ID = "din_klient_id" CLIENT_SECRET = "din_klient_hemmelighet" SPREADSHEET_ID = os.getenv("INPUT_SPREADSHEET_ID") SHEET_ID = os.getenv("INPUT_SPREADSHEET_SHEET_ID") HELLO_WORLD = "Hallo verden"- Erstatt plassholderne for legitimasjon og celleverdien med dine egne verdier.
- Lagre skriptet.
- I regnearkets Automatiseringspanel oppretter du en automatisering med en Manuell utførelse -utløser.
- Legg til en Utfør skript handling og velg dette skriptet.
- Lagre og kjør automatiseringen.
Hvis du vil vite mer, kan du se Kjør skript med automatiseringer .