Para demonstrar como o script funciona na Workiva, criamos anteriormente um script que atualiza uma célula em uma planilha. Este artigo baseia-se nesse exemplo e demonstra como você pode executar a mesma operação usando a autenticação baseada em token.
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.
- Você deve ter a função Script Editor para criar ou editar scripts.
Etapa 1: Criar um arquivo de script
Esse script é uma variação do usado em nosso Sample: Script para atualizar planilhas artigo. Essa versão protege o ID do cliente e o segredo do cliente e, em vez disso, obtém um token que permite que o código seja autenticado na Workiva.
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 scripts no meio da tela e exclua qualquer código existente. Copie e cole o seguinte:
# 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() - Clique em Salvar.
Etapa 2: gerar dependências em seu computador local
Ao trabalhar nesta seção, você perceberá que esta variação não inclui nenhum código para gerar um token com base na ID do cliente e no segredo do cliente. Em vez disso, o código é abstraído em uma biblioteca criada localmente chamada WorkivaAuth e, em seguida, empacotado no pacote dependencies.zip juntamente com a biblioteca de solicitação.
Para acompanhar o processo, abra o terminal em seu computador local e execute estas etapas:
- Crie uma pasta chamada Creds.
mkdir Creds
- Entre na pasta Creds.
cd Creds
- Crie um arquivo requirements.txt com o seguinte conteúdo:
./WorkivaAuth/dist/WorkivaAuth-1.0.tar.gz requests==2.29.0
- Crie uma pasta chamada WorkivaAuth.
mkdir WorkivaAuth
- Entre na pasta WorkivaAuth.
cd WorkivaAuth
- Na pasta WorkivaAuth, crie um arquivo setup.py com o seguinte conteúdo:
from setuptools import setup, find_packages setup( name='WorkivaAuth', version='1.0', packages=find_packages(), install_requires=[ 'requests' ] )
- Na pasta WorkivaAuth, crie outra pasta chamada WorkivaAuth.
mkdir WorkivaAuth
Observação: Isso não é um erro de digitação. O caminho correto é ./WorkivaAuth/WorkivaAuth.
- Entre na pasta WorkivaAuth que você acabou de criar.
cd WorkivaAuth
- Crie um arquivo vazio __init__.py e um arquivo WorkivaAuth.py na pasta WorkivaAuth/WorkivaAuth com o seguinte conteúdo:
# WorkivaAuth import requests import json # Substitua pelo URL real AUTH_URL = "https://api.app.wdesk.com/iam/v1/oauth2/token" # Definir a variável ausente CLIENT_ID CLIENT_ID = "your_client_id" # Definir a variável ausente CLIENT_SECRET CLIENT_SECRET = "your_client_secret" def getWorkivaAuthToken(): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'client_credentials' } # Substitua com os cabeçalhos apropriados 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']Agora você deve ter a seguinte estrutura de pastas:
Creds/ |-- WorkivaAuth/ | |-- WorkivaAuth/ | | | |-- __init__.py | | | |-- WorkivaAuth.py | |-- setup.py |-- requirements.txt
-
Volte para a pasta Creds.
cd ..
cd ...
- Execute os seguintes comandos para gerar o pacote de distribuição WorkivaAuth.
cd WorkivaAuth
python3 setup.py sdist
cd ...
- Instale a dependência em um novo diretório Dependencies.
pip3 install --target ./dependencies --requirement requirements.txt
- Crie um arquivo dependencies.zip.
cd dependencies
zip -r ../dependencies.zip .
cd ...
Na parte final deste artigo, mostraremos a você como fazer upload desse arquivo para o script criado em Etapa 1.
Etapa 3: fazer upload das dependências para a Workiva
Agora que você criou o arquivo de dependências, retorne à Workiva e faça o upload como fonte.
- Vá para Workiva Scripting e abra o arquivo de script que você criou anteriormente neste artigo.
- Vá para o painel Sources no lado esquerdo; clique com o botão direito do mouse no espaço em branco logo abaixo do arquivo atual e selecione Upload Source Files.
- Selecione Navegue por e localize o arquivo dependencies.zip que você criou na etapa anterior.
- Faça o upload do arquivo dependencies.zip para concluir.
Você deverá ver uma fonte não selecionável chamada dependencies.zip, indicando que agora você está pronto para se autenticar na Workiva sem expor nenhuma credencial!