Que tal automatizar aquela tarefa repetitiva diária?
![](https://static.wixstatic.com/media/1b626c_3ef2f09e6d0048dbb74b9e2585261102~mv2.jpg/v1/fill/w_980,h_541,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_3ef2f09e6d0048dbb74b9e2585261102~mv2.jpg)
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:
![](https://static.wixstatic.com/media/1b626c_d1ee033035d846638648d431480e203b~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_d1ee033035d846638648d431480e203b~mv2.png)
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! :)
Commentaires