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 só está disponível 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.
- Você deve gerar dependências para executar esse script diretamente de uma planilha. Você incluirá a biblioteca de "solicitações" 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á para o editor de script no meio da tela e exclua qualquer código existente. Copie e cole o seguinte:
import requests import json import os AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" SS_API_URL = 'https://api.app.wdesk.com/platform/v1/spreadsheets/' 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'} def getAuthToken(self): tokenRes = requests.post(AUTH_URL, data = 'client_id=' + CLIENT_ID + \ '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', \ headers = self._headers) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token'] class 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} def getRawData(self): dataRes = requests.get(self._ssApiUrl, headers = self._headers) # print(dataRes) rawData = json.loads(dataRes.text) # todo o tratamento da paginação # print("---", rawData['data'][0]['values'][0]) return rawData['data'][0]['values'] def updateRange(self, sheetId, range, values): url = SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + \ range print("Update Range: ", url) print("Values: ", values) dataRes = requests.put(url, headers = self._headers, \ data=json.dumps(values)) def write_tier_data(ssApi: SSApi): values = [] values.append([HELLO_WORLD]) ssApi.updateRange(SHEET_ID, 'A1:ZZZZ99', {"values": values}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) # rawData = ssApi.getRawData() 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
Para executar o script manualmente:
- 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
Este script e outros semelhantes também podem ser executados diretamente de uma planilha por meio do uso de automações .
Para usar esse script com automações:
- Exclua o código existente.
- Substitua-o por este código:
import requests import json import os AUTH_URL = "https://api.sandbox.wdesk.com/iam/v1/oauth2/token" SS_API_URL = 'https://api.sandbox.wdesk.com/platform/v1/spreadsheets/' # 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') CLIENT_ID = "" # Digite aqui o ID do seu cliente CLIENT_SECRET = "" # Digite o segredo do seu cliente aqui DOCUMENT_ID = os.getenv('DOCUMENT_ID') INPUT_SHEET_ID = os.getenv('INPUT_SHEET_ID') INPUT_RESOURCE_ID = os.getenv('INPUT_RESOURCE_ID') def getSpreadsheetId(wurl): start = wurl.find("sheets_") if (start >= 0): return wurl[start + len("sheets_"):] return None def getSpreadsheetSectionId(sheetId, wurl): start = wurl.find("sheets_" + sheetId + "_") if (start >= 0): return wurl[start + len("sheets_" + sheetId + "_"):] return None SPREADSHEET_ID = getSpreadsheetId(INPUT_SHEET_ID) if SPREADSHEET_ID != None : SHEET_ID = getSpreadsheetSectionId(SPREADSHEET_ID, INPUT_RESOURCE_ID) HELLO_WORLD = "Holaaaaaaaaaa" class ApiAuth: def __init__(self): self._headers = {'Content-Type': \ 'application/x-www-form-urlencoded;charset=UTF-8'} def getAuthToken(self): tokenRes = requests.post(AUTH_URL, data = 'client_id=' + CLIENT_ID + \ '&client_secret=' + CLIENT_SECRET + '&grant_type=client_credentials', \ headers = self._headers) tokenResponse = json.loads(tokenRes.text) return tokenResponse['access_token'] class 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} def getRawData(self): dataRes = requests.get(self._ssApiUrl, headers = self._headers) # print(dataRes) rawData = json.loads(dataRes.text) # todo o tratamento da paginação # print("---", rawData['data'][0]['values'][0]) return rawData['data'][0]['values'] def updateRange(self, sheetId, range, values): url = SS_API_URL + SPREADSHEET_ID + "/sheets/" + sheetId + "/values/" + \ range print("Update Range: ", url) print("Values: ", values) dataRes = requests.put(url, headers = self._headers, \ data=json.dumps(values)) def write_tier_data(ssApi: SSApi): values = [] values.append([HELLO_WORLD]) ssApi.updateRange(SHEET_ID, 'A1:ZZZZ99', {"values": values}) def main(): authToken = ApiAuth().getAuthToken() ssApi = SSApi(authToken) # rawData = ssApi.getRawData() write_tier_data(ssApi) print('Chamando main') main() - Acesse , este artigo e siga as etapas para executar o script a partir da planilha.