Para demonstrar como o Workiva Scripting funciona no Workiva, criamos um script simples que atualiza uma célula em uma planilha. Você pode seguir essas etapas para replicar o script em seu próprio espaço de trabalho.
Observação: No momento, a criação de scripts está disponível somente por meio do Customize Workiva. Saiba mais.
Requisitos
- O Roteiros da Workiva deve estar ativado em seu espaço de trabalho. Saiba mais sobre o Roteiros da Workiva.
- A função Script Editor é necessária para que você possa criar ou editar scripts.
- A licença da API utilizada neste exemplo deve ter o escopo
file:write e acesso à planilha de destino. Para obter instruções, consulte a seção “Configuração da API do Workiva”. - Você deve gerar dependências para executar esse script diretamente de uma planilha. Isso incluirá a biblioteca “requests”, necessária para interagir com as APIs públicas da Workiva .
Crie o script
Para criar o script em seu espaço de trabalho, siga estas etapas:
- Em Home, clique em + Create => Script.
- No lado direito, digite um nome e uma breve descrição para o script.
-
Vá até o editor de scripts, localizado no meio da tela, e apague todo o código existente. Copie e cole o seguinte:
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") class 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 enquanto time.monotonic() < deadline: operationRes = requests.get( operationUrl, headers=self._headers, timeout=REQUEST_TIMEOUT, ) operationRes.raise_for_status() operation = operationRes.json() se operation["status"] == "completed": return se operation["status"] == "failed": raise RuntimeError( operation.get("failureReason", "Falha na atualização da planilha") ) time.sleep(float(operationRes.headers.get("Retry-After", "2"))) raise TimeoutError("A atualização da planilha não foi concluída antes do tempo limite") def updateRange(self, sheetId, range, values): url = ( SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + range ) print("Intervalo de atualização:", url) print("Valores:", 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") se não for operationUrl: raise RuntimeError("A atualização da planilha não retornou uma URL de operação") 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("Chamando main") main() - Clique em Salvar.
Neste ponto, você deve garantir que gerou as dependências necessárias para este script.
Execute o script
É necessário gerar as dependências antes de executar este script. O pacote de dependências inclui a biblioteca ` requests `, utilizada para chamar as APIs públicas da Workiva.
- Com o script aberto, clique em Run Script na barra de menus na parte superior da tela.
- Digite os parâmetros necessários para acessar a API do Spreadsheets, os IDs da planilha e da folha e o conteúdo do texto da célula. Clique em Run Script.
Observação: Os IDs podem ser encontrados no URL da planilha: /spreadsheet/{spreadsheetId}/sheet/{sheetId}.
Para verificar se o script foi concluído, verifique a célula atualizada na planilha.
Execute o script diretamente de uma planilha
As automações do Workiva fornecem as identificações da planilha e da folha por meio de variáveis de ambiente, mas não transmitem entradas personalizadas em tempo de execução. Para usar este script em uma automação, substitua as declarações de entrada de tempo de execução no script original. Restrinja o acesso ao script aos usuários autorizados, pois os usuários com permissões de código-fonte podem visualizar os valores definidos em seu código.
Substituir:
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")Com:
CLIENT_ID = "seu_id_de_cliente" CLIENT_SECRET = "seu_segredo_de_cliente" SPREADSHEET_ID = os.getenv("INPUT_SPREADSHEET_ID") SHEET_ID = os.getenv("INPUT_SPREADSHEET_SHEET_ID") HELLO_WORLD = "Olá, mundo"- Substitua os espaços reservados para credenciais e o valor da célula pelos seus valores.
- Salve o script.
- No painel “Automações” da planilha, crie uma automação com um gatilho “ ” (Execução manual) .
- Adicione uma ação “Executar script” do e selecione este script.
- Salve e execute a automação.
Para saber mais, consulte Executar scripts com automações .