Per dimostrare come funziona lo scripting in Workiva, abbiamo costruito in precedenza uno script che aggiorna una cella in un foglio di calcolo. Questo articolo si basa su quell'esempio e mostra come eseguire la stessa operazione utilizzando l'autenticazione basata su token.
Nota: Al momento lo scripting è disponibile solo attraverso Customize Workiva. Per saperne di più.
Requisiti
- Workiva Scripting deve essere abilitato per il tuo workspace. Scopri di più su Workiva Scripting.
- Il ruolo Script Editor è necessario per creare o modificare gli script.
Passo 1: Creare un file di script
Questo script è una variante di quello utilizzato nel nostro esempio : Script per aggiornare i fogli di calcolo. Questa versione protegge l'ID e il segreto del cliente e ottiene invece un token che consente al codice di autenticarsi in Workiva.
Per creare lo script nel tuo spazio di lavoro, segui i seguenti passaggi:
- Dalla Home, clicca su + Crea => Script.
- A destra, inserisci un nome e una breve descrizione per lo script.
- Vai nell'editor di script al centro dello schermo e cancella il codice esistente. Copia e incolla quanto segue:
# Welcome to 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 aggiornato!!!") main() - Clicca su Salva.
Passo 2: Generare le dipendenze sul tuo computer locale
Mentre lavori a questa sezione, noterai che questa variante non include alcun codice per generare un token basato sull'ID e sul segreto del cliente. Piuttosto, il codice è astratto in una libreria creata localmente chiamata WorkivaAuth e poi inserita nel bundle dependencies.zip insieme alla libreria di richiesta.
Per seguirci, apri il terminale del tuo computer locale e completa i seguenti passaggi:
- Crea una cartella chiamata Creds.
mkdir Creds
- Entra nella cartella Creds.
cd Creds
- Creare un file requirements.txt con il seguente contenuto:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Crea una cartella chiamata WorkivaAuth.
mkdir WorkivaAuth
- Entra nella cartella WorkivaAuth.
cd WorkivaAuth
- Nella cartella WorkivaAuth, crea un file setup.py con il seguente contenuto:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- Nella cartella WorkivaAuth, crea un'altra cartella chiamata WorkivaAuth.
mkdir WorkivaAuth
Nota: Questo non è un errore di battitura. Il percorso corretto è ./WorkivaAuth/WorkivaAuth.
- Entra nella cartella WorkivaAuth appena creata.
cd WorkivaAuth
- Crea un file vuoto __init__.py e un file WorkivaAuth.py nella cartella WorkivaAuth/WorkivaAuth con il seguente contenuto:
# WorkivaAuth import requests import json # Sostituisci con l'URL effettivo AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Definisci la variabile mancante CLIENT_ID CLIENT_ID = "your_client_id" # Definisci la variabile mancante CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Sostituisci con le intestazioni appropriate 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']Ora dovresti avere la seguente struttura di cartelle:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | |-- __init__.py | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt
-
Torna alla cartella Creds.
cd ..
cd ...
- Esegui i seguenti comandi per generare il tuo pacchetto di distribuzione di WorkivaAuth.
cd WorkivaAuth
python3 setup.py sdist
cd ...
- Installa la dipendenza in una nuova cartella Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Crea un file dependencies.zip.
cd dependencies
zip -r ../dependencies.zip .
cd ...
Nella parte finale di questo articolo ti mostreremo come caricare questo file nello script creato in Passo 1.
Passo 3: caricare le dipendenze su Workiva
Ora che hai creato il file delle dipendenze, torna su Workiva e caricalo come sorgente.
- Vai su Workiva Scripting e apri il file di script creato in precedenza in questo articolo.
- Vai al pannello Sources sul lato sinistro; clicca con il tasto destro del mouse nello spazio vuoto appena sotto il file corrente e seleziona Upload Source Files.
- Seleziona Sfoglia e individua il file dependencies.zip creato nel passaggio precedente.
- Carica il file dependencies.zip per concludere.
Dovresti vedere una fonte non selezionabile chiamata dependencies.zip, che indica che ora sei pronto ad autenticarti in Workiva senza esporre alcuna credenziale!