Pour démontrer le fonctionnement de Workiva Scripting dans Workiva, nous avons construit un script simple qui met à jour une cellule dans une feuille de calcul. Vous pouvez suivre les étapes suivantes pour reproduire le script dans votre propre espace de travail.
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.
- L'autorisation API utilisée dans cet exemple doit disposer de la portée « » (
fichier : écriture ) et d'un accès à la feuille de calcul cible. Pour plus d'informations, consultez la section « Configuration de l'API Workiva ». - Vous devez générer les dépendances afin d'exécuter ce script directement à partir d'une feuille de calcul. Cela inclura la bibliothèque « requests » nécessaire pour interagir avec les API publiques de Workiva .
Construire le script
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.
-
Accédez à l'éditeur de script situé au centre de l'écran et supprimez tout code existant. Copiez et collez ce qui suit :
import os import time import requests AUTH_URL = "https://api.app.wdesk.com/oauth2/token" SS_API_URL = "https://api.app.wdesk.com/spreadsheets/" API_VERSION = "2026-01-01" REQUEST_TIMEOUT = 30 OPERATION_TIMEOUT = 120 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") classe ApiAuth : def __init__(self) : self._headers = { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "X-Version": API_VERSION, } def getAuthToken(self): tokenRes = requests.post( AUTH_URL, data={ "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "grant_type": "client_credentials", }, headers=self._headers, timeout=REQUEST_TIMEOUT, ) tokenRes.raise_for_status() return tokenRes.json()["access_token"] classe 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, "X-Version": API_VERSION, } def getRawData(self): dataRes = requests.get( self._ssApiUrl, headers=self._headers, timeout=REQUEST_TIMEOUT, ) dataRes.raise_for_status() rawData = dataRes.json() return rawData["data"][0]["values"] def waitForOperation(self, operationUrl) : deadline = time.monotonic() + OPERATION_TIMEOUT while time.monotonic() < deadline : operationRes = requests.get( operationUrl, headers=self._headers, timeout=REQUEST_TIMEOUT, ) operationRes.raise_for_status() operation = operationRes.json() if operation["status"] == "completed": return if operation["status"] == "failed": raise RuntimeError( operation.get("failureReason", "Échec de la mise à jour de la feuille de calcul") ) time.sleep(float(operationRes.headers.get("Retry-After", "2"))) raise TimeoutError("La mise à jour de la feuille de calcul n'a pas été effectuée avant l'expiration du délai") def updateRange(self, sheetId, range, values): url = ( SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + range ) print("Plage à mettre à jour :", url) print("Valeurs :", values) dataRes = requests.put( url, headers=self._headers, json=values, timeout=REQUEST_TIMEOUT, ) dataRes.raise_for_status() operationUrl = dataRes.headers.get("Location") if not operationUrl: operationUrl = dataRes.json().get("operationLocation") if not operationUrl: raise RuntimeError("La mise à jour de la feuille de calcul n'a pas renvoyé d'URL d'opération") self.waitForOperation(operationUrl) def write_tier_data(ssApi): ssApi.updateRange(SHEET_ID, "A1", {"values": [[HELLO_WORLD]]}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) write_tier_data(ssApi) print("Appel de la fonction main") main() - Cliquez sur Enregistrer.
À ce stade, vous devez vous assurer que vous avez généré les dépendances nécessaires pour ce script.
Exécuter le script
Vous devez générer les dépendances avant d'exécuter ce script. Le bundle de dépendances comprend la bibliothèque ` requests `, utilisée pour appeler les API publiques de Workiva.
- Lorsque le script est ouvert, cliquez sur Run Script dans la barre de menu en haut de l'écran.
- Saisissez les paramètres nécessaires pour accéder à l'API des feuilles de calcul, les identifiants de la feuille de calcul et de la feuille, ainsi que le contenu textuel de la cellule. Cliquez sur Run Script.
Note: Les ID se trouvent dans l'URL de la feuille de calcul : /spreadsheet/{spreadsheetId}/sheet/{sheetId}.
Pour vérifier que le script est terminé, vérifiez la cellule mise à jour dans la feuille de calcul.
Exécuter le script directement à partir d'une feuille de calcul
Les automatisations Workiva fournissent les identifiants des feuilles de calcul et des feuilles via des variables d'environnement, mais ne transmettent pas les entrées personnalisées d'exécution. Pour utiliser ce script dans le cadre d'une automatisation, remplacez les déclarations « runtime-input » présentes dans le script d'origine. Limitez l'accès au script aux utilisateurs autorisés, car les utilisateurs disposant de droits d'accès au code source peuvent consulter les valeurs définies dans ce dernier.
Remplacer :
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")Avec :
CLIENT_ID = "votre_id_client" CLIENT_SECRET = "votre_secret_client" SPREADSHEET_ID = os.getenv("INPUT_SPREADSHEET_ID") SHEET_ID = os.getenv("INPUT_SPREADSHEET_SHEET_ID") HELLO_WORLD = "Hello World"- Remplacez les espaces réservés aux identifiants et la valeur de la cellule par vos propres valeurs.
- Enregistrez le script.
- Dans le volet « Automatisations » de la feuille de calcul, créez une automatisation avec un déclencheur « Exécution manuelle » ( ) de type « ».
- Ajoutez une action « Exécuter un script » ( ) dans « » et sélectionnez ce script.
- Enregistrez et exécutez l'automatisation.
Pour en savoir plus, consultez Exécuter des scripts à l'aide d'automatisations .