Aby zademonstrować działanie skryptów w Workiva, wcześniej stworzyliśmy skrypt , który aktualizuje komórkę w arkuszu kalkulacyjnym. Ten artykuł opiera się na tym przykładzie, pokazując, jak wykonać tę samą operację przy użyciu uwierzytelniania opartego na tokenach.
Uwaga: Skrypty są obecnie dostępne tylko poprzez Customize Workiva. Dowiedz się więcej.
Wymagania
- Skrypty Workiva muszą być włączone dla Twojej przestrzeni roboczej. Dowiedz się więcej o Workiva Scripting.
- Rola Script Editor jest wymagana do tworzenia lub edytowania skryptów.
Krok 1: Utwórz plik skryptu
Ten skrypt jest odmianą skryptu używanego w naszym artykule Sample: Skrypt do aktualizacji arkuszy kalkulacyjnych artykuł. Ta wersja chroni identyfikator klienta i sekret klienta, a zamiast tego uzyskuje token, który pozwala kodowi uwierzytelnić się w Workiva.
Aby utworzyć skrypt w obszarze roboczym, wykonaj następujące kroki:
- Na stronie głównej kliknij + Create => Script.
- Po prawej stronie wprowadź nazwę i krótki opis skryptu.
- Przejdź do edytora skryptów na środku ekranu i usuń istniejący kod. Skopiuj i wklej następujące elementy:
# Witamy w 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 = {'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(["Hello World"]) outputSSApi.updateRange('A1', {"values": values}) def main(): authToken = WorkivaAuth.getWorkivaAuthToken() outputSSApi = SSApi(authToken, OUTPUT_SS_ID, OUTPUT_SHEET_ID) updateSS(outputSSApi) print("SS updated!!!") main() - Kliknij Zapisz.
Krok 2: Wygeneruj zależności na komputerze lokalnym
Podczas pracy z tą sekcją zauważysz, że ta odmiana nie zawiera żadnego kodu do generowania tokena na podstawie identyfikatora klienta i tajnego hasła klienta. Kod jest raczej abstrahowany w lokalnie utworzonej bibliotece o nazwie WorkivaAuth, a następnie pakowany do pakietu dependencies.zip wraz z biblioteką żądań.
Aby postępować zgodnie z instrukcjami, otwórz terminal na komputerze lokalnym i wykonaj następujące kroki:
- Utwórz folder o nazwie Creds.
mkdir Creds
- Wejdź do folderu Creds.
cd Creds
- Utwórz plik requirements.txt o następującej zawartości:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Utwórz folder o nazwie WorkivaAuth.
mkdir WorkivaAuth
- Wejdź do folderu WorkivaAuth.
cd WorkivaAuth
- W folderze WorkivaAuth utwórz plik setup.py o następującej zawartości:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- W folderze WorkivaAuth utwórz kolejny folder o nazwie WorkivaAuth.
mkdir WorkivaAuth
Uwaga: 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']Powinieneś mieć teraz następującą strukturę folderów:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | | |-- setup.py |-- requirements.txt
-
Wróć do folderu Creds.
cd ..
cd ..
- Uruchom następujące polecenia, aby wygenerować pakiet dystrybucyjny WorkivaAuth.
cd WorkivaAuth
python3 setup.py sdist
cd .
- Zainstaluj zależność w nowym katalogu Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Utwórz plik dependencies.zip.
cd dependencies
zip -r ../dependencies.zip .
cd .
W ostatniej części tego artykułu pokażemy Ci, jak przesłać ten plik do skryptu utworzonego w Krok 1.
Krok 3: Prześlij zależności do Workiva
Po utworzeniu pliku 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 pustym miejscu 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.
- Prześlij plik dependencies.zip, aby zakończyć.
Powinieneś zobaczyć niewybieralne źródło o nazwie dependencies.zip, wskazujące, że jesteś teraz gotowy do uwierzytelnienia w Workiva bez ujawniania jakichkolwiek danych uwierzytelniających!