Pour démontrer le fonctionnement des scripts dans Workiva, nous avons précédemment construit un script qui met à jour une cellule dans une feuille de calcul. Cet article s'appuie sur cet exemple et montre comment effectuer la même opération à l'aide d'une authentification par jeton.
Note: La création de scripts n'est actuellement possible que par l'intermédiaire de Customize Workiva. En savoir plus.
Exigences
- Workiva Scripting doit être activé pour votre espace de travail. En savoir plus sur Workiva Scripting.
- Le rôle d'éditeur de script est nécessaire pour créer ou modifier des scripts.
Étape 1 : Création d'un fichier de script
Ce script est une variante de celui utilisé dans notre article Sample : Script de mise à jour des feuilles de calcul. Cette version protège l'identifiant et le secret du client, et obtient à la place un jeton qui permet au code de s'authentifier dans Workiva.
Pour créer le script dans votre espace de travail, procédez comme suit :
- Depuis Home, cliquez sur Create => Script.
- Dans la partie droite, saisissez un nom et une brève description du script.
- Allez dans l'éditeur de script au milieu de l'écran et supprimez tout code existant. Copiez et collez le texte suivant :
# 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 updated!!!") main() - Cliquez sur Enregistrer.
Étape 2 : Générer les dépendances sur votre machine locale
En parcourant cette section, vous remarquerez que cette variante n'inclut pas de code permettant de générer un jeton sur la base de l'identifiant et du secret du client. Le code est plutôt abstrait dans une bibliothèque créée localement et nommée WorkivaAuth, puis empaquetée dans le paquet dependencies.zip avec la bibliothèque de requêtes.
Pour suivre la procédure, ouvrez le terminal sur votre machine locale et suivez les étapes suivantes :
- Créez un dossier nommé Creds.
mkdir Creds
- Entrez dans le dossier Creds.
cd Creds
- Créez un fichier requirements.txt avec le contenu suivant :
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Créez un dossier nommé WorkivaAuth.
mkdir WorkivaAuth
- Entrez dans le dossier WorkivaAuth.
cd WorkivaAuth
- Dans le dossier WorkivaAuth, créez un fichier setup.py avec le contenu suivant :
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- Dans le dossier WorkivaAuth, créez un autre dossier nommé WorkivaAuth.
mkdir WorkivaAuth
Note: Ce n'est pas une faute de frappe. Le chemin correct est ./WorkivaAuth/WorkivaAuth.
- Allez dans le dossier WorkivaAuth que vous venez de créer.
cd WorkivaAuth
- Créez un fichier __init__.py vide et un fichier WorkivaAuth.py dans le dossier WorkivaAuth/WorkivaAuth avec le contenu suivant :
# WorkivaAuth import requests import json # Remplacez par l'URL réelle AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Définir la variable manquante CLIENT_ID CLIENT_ID = "your_client_id" # Définir la variable manquante CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken() : data = { 'client_id' : CLIENT_ID, 'client_secret' : CLIENT_SECRET, 'grant_type' : 'client_credentials' } # Remplacer par les en-têtes appropriés en-têtes = { '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']Vous devriez maintenant avoir la structure de dossier suivante :
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | |-- __init__.py | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt
-
Retournez dans le dossier Creds.
cd ..
cd ...
- Exécutez les commandes suivantes pour générer votre paquet de distribution WorkivaAuth.
cd WorkivaAuth
python3 setup.py sdist
cd ....
- Installer la dépendance dans un nouveau répertoire Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Créez un fichier dependencies.zip.
cd dependencies
zip -r ../dependencies.zip .
cd ....
Dans la dernière partie de cet article, nous vous montrerons comment télécharger ce fichier dans le script créé à Étape 1.
Étape 3 : Téléchargement des dépendances dans Workiva
Maintenant que vous avez créé votre fichier de dépendances, vous allez retourner à Workiva et le télécharger en tant que source.
- Allez dans Workiva Scripting et ouvrez le fichier script que vous avez créé plus tôt dans cet article.
- Allez dans le panneau Sources sur le côté gauche ; faites un clic droit dans l'espace vide juste en dessous du fichier actuel et sélectionnez Upload Source Files.
- Sélectionnez Parcourez et localisez le fichier dependencies.zip que vous avez créé à l'étape précédente.
- Téléchargez le fichier dependencies.zip pour terminer.
Vous devriez voir une source non sélectionnable nommée dependencies.zip, indiquant que vous êtes maintenant prêt à vous authentifier dans Workiva sans exposer d'informations d'identification !