Aby pokazać, jak działa skryptowanie w Workiva, wcześniej stworzyliśmy skrypt , który aktualizuje komórkę w arkuszu kalkulacyjnym . W niniejszym artykule, na podstawie tego przykładu, pokazano, jak wykonać tę samą operację, korzystając z uwierzytelniania opartego na tokenie.
Uwaga : Skrypty są obecnie dostępne tylko poprzez Dostosowywanie Workiva. Dowiedz się więcej.
Wymagania
- W Twojej przestrzeni roboczej musi być włączona funkcja Workiva Scripting. Dowiedz się więcej o skryptach Workiva.
- Rola Edytora skryptów jest wymagana do tworzenia i edytowania skryptów.
Krok 1: Utwórz plik skryptu
Ten skrypt jest odmianą skryptu użytego w naszym artykule Przykład: Skrypt do aktualizacji arkuszy kalkulacyjnych . Ta wersja chroni identyfikator klienta i tajny klucz klienta, a zamiast tego uzyskuje token, który umożliwia uwierzytelnienie kodu w Workiva.
Aby utworzyć skrypt w swojej przestrzeni roboczej, wykonaj następujące kroki:
- Z poziomu ekranu głównego kliknij + Utwórz => Skrypt .
- Po prawej stronie wpisz nazwę i krótki opis skryptu.
-
Przejdź do edytora skryptów znajdującego się na środku ekranu i usuń cały istniejący kod. Skopiuj i wklej następujące:
# Witamy w skryptach Workiva import request 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 updateSS(outputSSApi: SSApi): values = [] values.append(["Witaj świecie"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS zaktualizowano!!!") main() - Kliknij Zapisz.
Krok 2: Wygeneruj zależności na swoim komputerze lokalnym
Podczas pracy nad tą sekcją zauważysz, że ta wersja nie zawiera żadnego kodu generującego token na podstawie identyfikatora klienta i tajnego klucza klienta. Zamiast tego kod jest abstrakcyjnie przekształcany w lokalnie utworzoną bibliotekę o nazwie WorkivaAuth , a następnie pakowany do pakietu dependencies.zip wraz z biblioteką żądań.
Aby kontynuować, otwórz terminal na komputerze lokalnym i wykonaj następujące kroki:
-
Utwórz folder o nazwie Creds .
mkdir Creds -
Przejdź do folderu Creds .
CD Creds -
Utwórz plik requirements.txt z następującą zawartością:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz żądania==2.29.0 -
Utwórz folder o nazwie WorkivaAuth .
mkdir WorkivaAuth -
Przejdź do folderu WorkivaAuth .
cd WorkivaAuth -
W folderze WorkivaAuth utwórz plik setup.py z następującą zawartością:
z setuptools import setup, find_packages setup(nazwa='WorkivaAuth', wersja='1.0', pakiety=find_packages(), install_requires=['requests']) -
W folderze WorkivaAuth utwórz inny folder o nazwie WorkivaAuth .
mkdir WorkivaAuthUwaga : To nie jest literówka. Prawidłowa ścieżka to ./WorkivaAuth/WorkivaAuth .
-
Przejdź do folderu WorkivaAuth , który właśnie utworzyłeś.
cd WorkivaAuth -
Utwórz pusty plik __init__.py i plik WorkivaAuth.py w folderze WorkivaAuth/WorkivaAuth z następującą zawartością:
# WorkivaAuth import requests import json # Zastąp rzeczywistym adresem URL AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Zdefiniuj brakującą zmienną CLIENT_ID CLIENT_ID = "your_client_id" # Zdefiniuj brakującą zmienną CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Zastąp odpowiednimi nagłówkami 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']Teraz powinieneś mieć następującą strukturę folderów:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt -
Wróć do folderu Creds .
płyta ..płyta .. -
Uruchom następujące polecenia, aby wygenerować pakiet dystrybucyjny WorkivaAuth .
cd WorkivaAuthpython3 setup.py sdistcd .. -
Zainstaluj zależność w nowym katalogu Dependencies .
pip3 install --target ./dependencies --requirements.txt -
Utwórz plik dependencies.zip .
zależności cdzip -r ../dependencies.zip .cd ..
W ostatniej części artykułu pokażemy, jak przesłać ten plik do skryptu utworzonego w Krok 1 .
Krok 3: Prześlij zależności do Workiva
Teraz, gdy utworzyłeś plik zależności, wróć do Workiva i prześlij go jako źródło.
- Przejdź do Workiva Scripting i otwórz plik skryptu, który utworzyłeś wcześniej w tym artykule .
- Przejdź do panelu Źródła po lewej stronie; kliknij prawym przyciskiem myszy w pustej przestrzeni tuż pod bieżącym plikiem i wybierz Prześlij pliki źródłowe .
- Wybierz Przeglądaj i znajdź plik dependencies.zip utworzony w poprzednim kroku.
- Aby zakończyć, prześlij plik dependencies.zip .
Powinieneś zobaczyć niewybieralne źródło o nazwie dependencies.zip , co oznacza, że teraz możesz uwierzytelnić się w Workiva bez ujawniania żadnych danych logowania!