For å demonstrere hvordan Workiva Scripting 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.
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.
- Du må generere avhengigheter for å kunne kjøre dette skriptet direkte fra et regneark. Dette inkluderer "requests"-biblioteket som er nødvendig for å samhandle med Workiva Public APIs.
Bygg skriptet
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:
import requests import json import os AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" SS_API_URL = 'https://api.app.wdesk.com/platform/v1/spreadsheets/' 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 = {'Content-Type': \ 'application/x-www-form-urlencoded;charset=UTF-8'} def getAuthToken(self): tokenRes = requests.post(AUTH_URL, data = 'client_id=' + CLIENT_ID + \ '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', \ headers = self._headers) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token'] class SSApi: def __init__(self, accessToken): self._accessToken = 'Bearer ' + accessToken self._ssApiUrl = SS_API_URL + SPREADSHEET_ID + "/sheets/" + SHEET_ID + \ "/values/A2:H" self._headers = {'Authorization': self._accessToken} def getRawData(self): dataRes = requests.get(self._ssApiUrl, headers = self._headers) # print(dataRes) rawData = json.loads(dataRes.text) # todo håndtere paginering # print("---", rawData['data'][0]['values'][0]) return rawData['data'][0]['values'] def updateRange(self, sheetId, range, values): url = SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + \ range print("Update Range: ", url) print("Values: ", values) dataRes = requests.put(url, headers = self._headers, \ data=json.dumps(values)) def write_tier_data(ssApi: SSApi): values = [] values.append([HELLO_WORLD]) ssApi.updateRange(SHEET_ID, 'A1:ZZZZ99', {"values": values}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) # rawData = ssApi.getRawData() write_tier_data(ssApi) print('Calling main') main() - Klikk på Lagre.
På dette tidspunktet bør du forsikre deg om at du har generert de nødvendige avhengighetene for dette skriptet.
Kjør skriptet
Til manuelt skript:
- Når skriptet er åpent, klikker du på Run Script i menylinjen øverst på skjermen.
- Angi parameterne som trengs for å få tilgang til Spreadsheets API, regneark- og ark-ID-ene og tekstinnholdet for cellen. Klikk på Kjør skript.
Merk: ID-ene finnes i regnearkets URL-adresse: /regneark/{regnearkId}/regneark/{regnearkId}.
Kontroller den oppdaterte cellen i regnearket for å bekrefte at skriptet er fullført.
Kjør skriptet direkte fra et regneark
Dette skriptet, og andre lignende skript, kan også kjøres direkte fra et regneark ved hjelp av automations.
Slik bruker du dette skriptet med automatiseringer:
- Slett den eksisterende koden.
- Erstatt den med denne koden:
import requests import json import os AUTH_URL = "https://api.sandbox.wdesk.com/iam/v1/oauth2/token" SS_API_URL = 'https://api.sandbox.wdesk.com/platform/v1/spreadsheets/' # 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') CLIENT_ID = "" # Skriv inn klient-ID her CLIENT_SECRET = "" # Skriv inn klienthemmeligheten her DOCUMENT_ID = os.getenv('DOCUMENT_ID') CLIENT_ID = os.getenv('DOCUMENT_ID') INPUT_SHEET_ID = os.getenv('INPUT_SHEET_ID') INPUT_RESOURCE_ID = os.getenv('INPUT_RESOURCE_ID') def getSpreadsheetId(wurl): start = wurl.find("sheets_") if (start >= 0): return wurl[start + len("sheets_"):] return None def getSpreadsheetSectionId(sheetId, wurl): start = wurl.find("sheets_" + sheetId + "_") if (start >= 0): return wurl[start + len("sheets_" + sheetId + "_"):] return None SPREADSHEET_ID = getSpreadsheetId(INPUT_SHEET_ID) if SPREADSHEET_ID != None : SHEET_ID = getSpreadsheetSectionId(SPREADSHEET_ID, INPUT_RESOURCE_ID) HELLO_WORLD = "Holaaaaaaaaaa" class ApiAuth: def __init__(self): self._headers = {'Content-Type': \ 'application/x-www-form-urlencoded;charset=UTF-8'} def getAuthToken(self): tokenRes = requests.post(AUTH_URL, data = 'client_id=' + CLIENT_ID + \ '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', \ headers = self._headers) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token'] class SSApi: def __init__(self, accessToken): self._accessToken = 'Bearer ' + accessToken self._ssApiUrl = SS_API_URL + SPREADSHEET_ID + "/sheets/" + SHEET_ID + \ "/values/A2:H" self._headers = {'Authorization': self._accessToken} def getRawData(self): dataRes = requests.get(self._ssApiUrl, headers = self._headers) # print(dataRes) rawData = json.loads(dataRes.text) # todo håndtere paginering # print("---", rawData['data'][0]['values'][0]) return rawData['data'][0]['values'] def updateRange(self, sheetId, range, values): url = SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + \ range print("Update Range: ", url) print("Values: ", values) dataRes = requests.put(url, headers = self._headers, \ data=json.dumps(values)) def write_tier_data(ssApi: SSApi): values = [] values.append([HELLO_WORLD]) ssApi.updateRange(SHEET_ID, 'A1:ZZZZ99', {"values": values}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) # rawData = ssApi.getRawData() write_tier_data(ssApi) print('Calling main') main() - Gå til denne artikkelen og følg trinnene for å kjøre skriptet fra regnearket ditt.