top of page
Buscar

Robô & Automação de Tarefas com Python.

Foto do escritor: Rafael MarianiRafael Mariani

Atualizado: 17 de set. de 2021

Que tal automatizar aquela tarefa repetitiva diária?




Contexto

Nossa tarefa se trata de um relatório sobre as vendas do dia anterior que precisa ser enviado para a diretoria diariamente às 06:00 da manhã. Essa tarefa é repetitiva e desgastante. Portanto, uma solução para o problema, é construir um código que reduza o nosso trabalho operacional, nos tornando mais eficientes.



Objetivo

O principal objetivo desse código é permitir uma melhor interpretação dos dados, em termos de qualidade e velocidade de análise. O nosso código disparará um e-mail de análise de indicadores para a diretoria automaticamente todos os dias!



Dataset

Fonte: Curso Hashtag Programação - Automação de Tarefas e Análise de Dados com Python







Resultado da Automação da Tarefa:


Antes de mais nada: configure seu chrome para abrir de forma maximizada como forma padrão! Tutorial bem rápido e fácil: https://www.ti-enxame.com/pt/google-chrome/como-iniciar-o-google-chrome-com-janela-maximizada/959483187/


Agora, vamos lá!


Importando Bibliotecas necessárias:

import pyautogui
import time
import pyperclip
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
pyautogui.PAUSE = 1 #número de segundos para pausar após CADA chamada de função.


Vamos abrir o Navegador Chrome:

#forma 1
#pyautogui.press('winleft') #apertando botão windows do teclado
#time.sleep(3) #aguardar 2 segundos
#pyautogui.write('chrome') #escrevendo chrome para identificar o app
#time.sleep(3) #aguardar 3 segundos
#pyautogui.press('enter') #apertando enter para abrir o chrome

#forma 2 
pyautogui.position() #obento coordendas x,y do mouse para o ponto de interesse na tela (icone do app chrome na área de trabalho)
pyautogui.click(476,750,clicks=1) #cliclando 1 vez na posição desejada (icone do app chrome na área de trabalho)


Vamos abrir o Drive (Diretório de Dados):

#abrir drive ############
link = r'https://drive.google.com/drive/folders/149xknr9JvrlEnhNWO49zPcw0PW5icxga'
pyperclip.copy(link) #copiando o link
time.sleep(8) #aguardar segundos
pyautogui.hotkey('ctrl','v') #colando o link na aba de endereço web
time.sleep(1) #aguardar 1 segundos
pyautogui.press('enter') #enter
time.sleep(15) #aguardar 1 segundos


Vamos ciclar nos locais de interesse para realizar o download do banco de dados no Drive:

pyautogui.position() #posição x,y do mouse referente a tela
pyautogui.click(351,325,clicks=2) #clicando 2 vezes na pasta de interesse
time.sleep(6) #aguardar segundos
pyautogui.position() #posição x,y do mouse referente a tela
pyautogui.click(345,326,clicks=1,button='RIGHT') #clicando com o botão direito
pyautogui.position() #posição x,y do mouse referente a tela
time.sleep(4) #aguardar segundos
pyautogui.click(428,642,clicks=1) #cliclando na aba de download da planilha


Processando e analisando os dados da planilha de vendas:

data_path = r'C:\Users\Rafael Mariani\Downloads\Vendas - Dez.xlsx'
vendas = pd.read_excel(data_path) #lendo dataset

vendas.info() #obtendo informações do dataset
vendas.head() #visualizando as 5 primeiras linhas 
vendas.isnull().sum() #identificando dados ausentes
#time.sleep(5) #aguardar 2 segundos

#calculando indicadores #######
vendas_dia = vendas.groupby('Data',as_index=False).sum() #agrupando as vendas por dia
media_fatur_mes=vendas_dia['Valor Final'].mean() #calculando a média mensal do faturamento
faturamento_ontem= vendas_dia.loc[len(vendas_dia['Valor Final'])-1,'Valor Final'] #capturando o faturamento do último dia (ontem)

quantidade_ontem = vendas_dia.loc[len(vendas_dia['Valor Final'])-1,'Quantidade'] #capturando a quantidade do último dia (ontem)
media_quant_mes =vendas_dia['Quantidade'].mean() #calculando a média mensal da quantidade de produtos



#Plotando Faturamento e Quantidades de itens 

fig, ax = plt.subplots(figsize=(14,5))
plt.bar(vendas_dia['Data'],vendas_dia['Valor Final'],label = 'Faturamento')
ax.set_ylabel('Faturamento (R$)',size='large',fontweight='bold')
ax.set_xlabel('Data',size='large',fontweight='bold')
ax.set_title('Vendas Diárias - Dezembro de 2019',size='large',fontweight='bold')
ax.set_ylim(ymin=0, ymax=160000)
ax.legend(loc='upper left')

#adicionando eixo yy 
ax2 = ax.twinx()
sns.lineplot(vendas_dia['Data'],vendas_dia['Quantidade'],ax=ax2,label='Itens',color='black',ci='none',lw=2)
plt.grid(False)
ax2.set_ylabel("Quantidade", size="large",fontweight='bold')
ax2.set_ylim(ymin=0, ymax=800)
ax2.legend(loc='upper right');

#salvando figura
path_fig = r'C:\Users\Rafael Mariani\Automação de Tarefas\AT - Relatório Vendas'
plt.savefig(path_fig + '\Vendas Diárias - Dezembro de 2019.png', dpi = 150, facecolor='w', edgecolor='w', orientation='portrait',)
print('Figura salva em ' + path_fig)

path_fig = r'C:\Users\Rafael Mariani\Automação de Tarefas\AT - Relatório Vendas'
plt.savefig(path_fig + '\Vendas Diárias - Dezembro de 2019.svg', dpi = 300, facecolor='w', edgecolor='w', orientation='portrait',)
print('Figura salva em ' + path_fig)
plt.close(fig)

time.sleep(8) #aguardar segundos

Figura plotada:



Vamos enviar o reporte da informação para a diretoria via e-mail:

#abrir o navegador novamente
#pyautogui.press('winleft') #apertando botão windows do teclado
#time.sleep(2) #aguardar 2 segundos
#pyautogui.write('chrome') #escrevendo chrome
#time.sleep(3) #aguardar 3 segundos
#pyautogui.press('enter') #apertando enter para abrir o chrome
#time.sleep(2) #aguardar 2 segundos

#pyautogui.hotkey('ctrl','t') #criando nova aba no chrome

#pyautogui.position() #obtendo coordendas x,y do mouse para o ponto de interesse na tela (icone do app chrome na área de trabalho)
#pyautogui.click(464,747,clicks=1) #cliclando 1 vez na posição desejada (icone do app chrome na área de trabalho)
time.sleep(5) #aguardar segundos
pyautogui.hotkey('ctrl','t') #criando nova aba no chrome

link = r'gmail.com'
pyperclip.copy(link) #copiando o link
time.sleep(2) #aguardar 2 segundos
pyautogui.hotkey('ctrl','v') #colando no endereço web
time.sleep(2) #aguardar 2 segundos
pyautogui.press('enter') #enter
time.sleep(15) #aguardar 2 segundos

Escrevendo o novo e-mail para a diretoria:


#acessar "Escrever" novo e-mail no Gmail

pyautogui.position()
pyautogui.click(83,173,clicks=1)
time.sleep(40)#aguardar segundos
contato = r'diretoria@company.com'
pyperclip.copy(contato) #copiando
pyautogui.hotkey('ctrl','v') #colando contato
time.sleep(2) #aguardar 2 segundos
#pyautogui.press('tab') #migrando para aba Assunto
pyautogui.click(852,278,clicks=1) #clicando na aba Assunto
time.sleep(2) #aguardar 2 segundos
assunto =  r'Relatório Diário de Vendas - Dezembro'  
pyperclip.copy(assunto) #copiando
pyautogui.hotkey('ctrl','v') #colando
time.sleep(2) #aguardar 2 segundos     
pyautogui.press('tab')
time.sleep(2) #aguardar 2 segundos


#criando texto que será enviado 
texto = f'''
Prezados, bom dia!

O faturamento de ontem foi de: R$ {faturamento_ontem:,.2f}.
O faturamento médio do mês é de: R$ {media_fatur_mes:,.2f}.

A quantidade de itens vendidos ontem foi de: {quantidade_ontem}.
A quantidade média de itens vendidos do mês é de: {media_quant_mes:.1f}.


Em anexo, segue o gráfico do reporte diário do mês atual.

Abs
Rafael Mariani


'''

#f''' indica que será criado um texto com variáveis inputadas a ele
#:indica que haverá alteração de propriedade
# .2f indica a utilização de duas casa decimais

pyperclip.copy(texto) #copiando
pyautogui.hotkey('ctrl','v') #colando
time.sleep(3) #aguardar  segundos

pyautogui.press('tab') #migrando para aba Anexo
pyautogui.press('tab') #migrando para aba Anexo
pyautogui.press('tab') #migrando para aba Anexo
pyautogui.press('enter') #enter na aba Anexo
pyautogui.click(x=350,y=72) #clicando na aba de endereço
pasta = r'C:\Users\Rafael Mariani\Automação de Tarefas\AT - Relatório Vendas'
pyperclip.copy(pasta) #copiando
pyautogui.hotkey('ctrl','v') #colando o endereço da pasta do gráfico
pyautogui.press('enter') #enter no diretório
time.sleep(2) #aguardar  segundos


pyautogui.click(x=265,y=447) #clicando na aba Nome de Arquivo
pyautogui.hotkey('ctrl','a')
pyautogui.press('backspace') #apagando caracteres
figura = r'Vendas Diárias - Dezembro de 2019.png'
pyperclip.copy(figura) #copiando
pyautogui.press('backspace') #enter para fazer upload do arquivo
time.sleep(2) #aguardar  segundos
pyautogui.hotkey('ctrl','v') #colando o nome do arquivo
pyautogui.press('enter') #enter para fazer upload do arquivo


time.sleep(6) #aguardar  segundos
pyautogui.hotkey('ctrl','enter')#enviando e-mail. FIM!

print('Relatório diário enviado com sucesso! :)')

Fim! :)





33 visualizações0 comentário

Posts recentes

Ver tudo

Commentaires


logo rm.png

© 2021 por Rafael Mariani. Criado orgulhosamente com Wix.com

bottom of page