Vivemos um tempo em que a tecnologia deixou de ser apenas uma ferramenta de especialistas para se tornar uma aliada indispensável em todas as profissões. Nos escritórios, onde o tempo é precioso e as demandas crescem a cada dia, a automação surge como uma ponte entre o trabalho repetitivo e a criatividade, entre o esforço manual e a inteligência estratégica.
Este livro nasce do desejo de mostrar que a automação não é privilégio de grandes empresas ou de programadores experientes. Ela está ao alcance de todos que desejam transformar sua rotina, ganhar tempo e abrir espaço para o que realmente importa: pensar, criar, inovar e servir melhor.
Ao longo destas páginas, você encontrará não apenas códigos e exemplos práticos, mas também uma nova forma de enxergar os desafios do dia a dia. Cada script, cada exercício, é um convite para experimentar, errar, aprender e, principalmente, evoluir. Python, com sua simplicidade e poder, será seu companheiro nessa jornada — e a inteligência artificial, uma porta para possibilidades antes inimagináveis.
Que este livro inspire você a dar o primeiro passo, a superar o medo do desconhecido e a descobrir que, com curiosidade e dedicação, é possível reinventar o trabalho no escritório. Que cada automação criada seja uma vitória sobre o tempo perdido e um passo rumo a uma vida profissional mais leve, produtiva e gratificante.
Boa leitura, bons estudos e, acima de tudo, ótimas descobertas!
Vivemos uma era em que a tecnologia e a inteligência artificial podem transformar o dia a dia dos escritórios, tornando tarefas repetitivas mais rápidas, precisas e menos cansativas. No entanto, muitos profissionais ainda gastam horas com atividades manuais que poderiam ser facilmente automatizadas.
Este livro nasceu da vontade de aproximar o poder da programação — especialmente do Python — e da inteligência artificial do ambiente de escritórios, sejam eles de advocacia, contabilidade, logística, vendas ou serviços para repartições públicas e órgãos governamentais. O objetivo é mostrar, de forma prática e acessível, como automatizar processos comuns, economizar tempo e aumentar a produtividade, mesmo para quem nunca programou antes.
Ao longo dos capítulos, você encontrará exemplos reais, projetos práticos e dicas para aplicar imediatamente no seu trabalho. Não é necessário ser um especialista em tecnologia: basta curiosidade e vontade de aprender.
O conteúdo está dividido em duas partes principais para facilitar o aprendizado e a aplicação dos conceitos:
Parte I – Fundamentos da Automação:
Aqui você aprenderá os conceitos essenciais, desde a instalação do ambiente até a manipulação de arquivos, automação de e-mails, web scraping, criação de interfaces gráficas simples e introdução ao uso de inteligência artificial em tarefas do escritório.
Parte II – Casos Reais por Tipo de Escritório:
Nesta parte, apresentamos exemplos práticos e projetos voltados para diferentes áreas, incluindo escritórios que prestam serviços para repartições públicas e órgãos governamentais, mostrando como adaptar as soluções para a sua realidade.
Espero que este material ajude você a transformar sua rotina profissional, abrindo portas para novas possibilidades e mostrando que a automação e a inteligência artificial estão ao alcance de todos.
A automação de tarefas rotineiras é uma das maiores oportunidades para escritórios que desejam ganhar produtividade, reduzir erros e liberar tempo para atividades mais estratégicas. Python, por ser uma linguagem acessível, poderosa e com vasta comunidade, tornou-se a escolha ideal para quem quer começar a automatizar processos no dia a dia profissional.
Este livro foi pensado para ser um guia prático, direto ao ponto, e acessível mesmo para quem nunca programou antes. O conteúdo está dividido em duas partes principais, para facilitar o aprendizado e a aplicação dos conceitos:
Parte I – Fundamentos da Automação:
Você aprenderá os conceitos essenciais, desde a instalação do ambiente
até a manipulação de arquivos, automação de e-mails, web scraping,
criação de interfaces gráficas simples e introdução ao uso de
inteligência artificial em tarefas do escritório.
Parte II – Casos Reais por Tipo de
Escritório:
Apresentamos exemplos práticos e projetos voltados para diferentes
áreas, incluindo escritórios de advocacia, contabilidade, logística,
e-commerce e serviços para repartições públicas, mostrando como adaptar
as soluções para a sua realidade.
Ao final, você encontrará projetos práticos para consolidar o aprendizado e estimular a criatividade na busca por novas automações.
Esperamos que este livro seja um ponto de partida para transformar sua rotina profissional, tornando seu escritório mais inteligente, eficiente e preparado para
Nesta primeira parte do livro, voce ira construir a base necessaria para comecar a automatizar tarefas do dia a dia em escritorios utilizando Python. O objetivo e apresentar os conceitos essenciais de forma pratica e acessivel, mesmo para quem nunca programou antes.
Você aprenderá desde a instalação do ambiente de desenvolvimento, passando pela manipulação de arquivos (Excel, CSV, PDF, Word), automação de e-mails e notificações, extração de dados de sites (web scraping), até a criação de interfaces gráficas simples. Cada capítulo traz exemplos práticos e exercícios para que você possa aplicar imediatamente o que aprendeu.
Ao dominar os fundamentos apresentados nesta parte, você estará preparado para avançar para os casos reais de automação em diferentes tipos de escritórios, explorados na Parte II do livro.
Automação é o processo de usar tecnologia para executar tarefas de forma automática, reduzindo a necessidade de intervenção manual. No contexto dos escritórios, isso significa transformar atividades repetitivas e demoradas em processos rápidos, precisos e eficientes.
Python é uma das linguagens de programação mais populares para automação devido à sua simplicidade, legibilidade e grande quantidade de bibliotecas prontas para uso. Com Python, é possível automatizar desde tarefas simples, como renomear arquivos em lote, até processos mais complexos, como gerar relatórios, enviar e-mails, manipular planilhas e interagir com sistemas web.
Ao longo deste livro, você verá como essas e outras tarefas podem ser automatizadas, tornando o seu dia a dia mais produtivo e eficiente. Vamos começar a jornada pela automação com Python!
Antes de iniciar os exemplos práticos, é importante preparar o ambiente de desenvolvimento. Siga os passos abaixo:
Abra o terminal do VS Code (atalho: `Ctrl + ``) e execute os comandos abaixo para instalar as principais bibliotecas que serão usadas nos exemplos:
pip install pandas openpyxl
pandas
: Manipulação de dados e leitura de planilhas
Excel.openpyxl
: Leitura e escrita de arquivos
.xlsx
(Excel).Após esses passos, seu ambiente estará pronto para executar os exemplos práticos.
Nesta seção, você aprenderá a manipular diferentes tipos de arquivos comuns no ambiente de escritório, como Excel, CSV, PDF e Word. Essas habilidades são essenciais para automatizar tarefas que envolvem leitura, escrita e processamento de dados.
Para ler e escrever arquivos CSV, use o módulo csv ou o pandas:
import csv
# Lendo um arquivo CSV
with open('dados.csv', mode='r', encoding='utf-8') as file:
= csv.reader(file)
leitor for linha in leitor:
print(linha)
# Escrevendo em um arquivo CSV
with open('saida.csv', mode='w', newline='', encoding='utf-8') as file:
= csv.writer(file)
escritor 'Nome', 'Idade'])
escritor.writerow(['João', 30])
escritor.writerow(['Maria', 25]) escritor.writerow([
Para manipular arquivos Excel, use a biblioteca pandas
ou openpyxl
. Aqui está um exemplo com
pandas
:
import pandas as pd
# Lendo um arquivo Excel
= pd.read_excel('dados.xlsx', sheet_name='Planilha1')
df print(df.head()) # Exibe as primeiras linhas do DataFrame
# Escrevendo em um arquivo Excel
'saida.xlsx', index=False, sheet_name='Resultados') df.to_excel(
Para ler arquivos PDF, você pode usar a biblioteca
PyPDF2
. Aqui está um exemplo simples:
import PyPDF2
# Lendo um arquivo PDF
with open('documento.pdf', 'rb') as file:
= PyPDF2.PdfReader(file)
leitor for pagina in leitor.pages:
print(pagina.extract_text()) # Extrai o texto de cada página
Para manipular arquivos Word, use a biblioteca
python-docx
. Veja como ler e escrever documentos:
from docx import Document
# Lendo um arquivo Word
= Document('documento.docx')
doc for par in doc.paragraphs:
print(par.text) # Exibe o texto de cada parágrafo
# Escrevendo em um arquivo Word
= Document()
doc_novo 'Título do Documento', level=1)
doc_novo.add_heading('Este é um parágrafo de exemplo.')
doc_novo.add_paragraph('novo_documento.docx') # Salva o novo documento doc_novo.save(
Para trabalhar com arquivos Excel, CSV, PDF e Word, você precisa instalar algumas bibliotecas extras. Siga os passos abaixo:
Crie um ambiente virtual (opcional, mas recomendado): No terminal, execute:
python -m venv venv
Ative o ambiente virtual:
venv\Scripts\activate
Instale as bibliotecas necessárias:
pip install pandas openpyxl pdfplumber python-docx
pandas
: manipulação de dados (CSV, Excel)openpyxl
: leitura/escrita de arquivos Excel
(.xlsx)pdfplumber
: leitura de arquivos PDFpython-docx
: leitura/escrita de arquivos Word
(.docx)(Opcional) Crie um arquivo requirements.txt
para registrar as dependências:
pip freeze > requirements.txt
Assim, seu ambiente estará pronto para manipular arquivos desses tipos em Python. Você pode usar os exemplos acima como base para criar scripts que automatizam tarefas relacionadas a esses arquivos no seu dia a dia profissional.
Nesta seção, você encontrará exercícios práticos para aplicar os conceitos aprendidos sobre manipulação de arquivos. Esses exercícios são projetados para serem desafiadores e ajudarão a consolidar seu conhecimento em automação de tarefas comuns em escritórios.
História:
Você trabalha no setor de análise de dados de uma loja online. Recebeu
um arquivo vendas.csv
contendo o histórico de vendas do
último mês. Cada linha do arquivo representa uma venda, com as seguintes
colunas: data
, produto
,
quantidade
, preco_unitario
.
Desafio:
vendas.csv
usando Python.relatorio_vendas.csv
contendo duas
colunas: produto
e total_vendido
.Exemplo de entrada (vendas.csv
):
data,produto,quantidade,preco_unitario
2025-06-01,Mouse,2,50
2025-06-01,Teclado,1,120
2025-06-02,Mouse,1,50
2025-06-02,Monitor,1,900
Código Python para resolver o exercício:
import os
import pandas as pd
# Caminhos dos arquivos
= r'C:\dev\python_escritorios\codes\vendas.csv'
csv_path = r'C:\dev\python_escritorios\codes\relatorio_vendas.csv'
relatorio_path
# Apaga o relatório antigo, se existir
if os.path.exists(relatorio_path):
os.remove(relatorio_path)
# Lê o arquivo de vendas
= pd.read_csv(csv_path)
df
# Calcula o total vendido por produto
'total'] = df['quantidade'] * df['preco_unitario']
df[= df.groupby('produto')['total'].sum().reset_index()
df_relatorio ={'total': 'total_vendido'}, inplace=True)
df_relatorio.rename(columns
# Salva o novo relatório
=False)
df_relatorio.to_csv(relatorio_path, index
print("Relatório de vendas gerado com sucesso!")
Resultado esperado
(relatorio_vendas.csv
):
produto,total_vendido
Mouse,150
Teclado,120
Monitor,900
Conclusão:
Com este exercício, você praticou a leitura de arquivos CSV, manipulação de dados com pandas e geração de relatórios. Essas habilidades são fundamentais para automatizar análises de vendas e outras tarefas relacionadas a dados em escritórios.
História: Neste exercício, vamos aplicar a integração entre Python e Excel para resolver um problema comum em empresas de aluguel de imóveis: o controle de inadimplência.
Cenário:
Uma empresa de aluguel de imóveis mantém uma planilha chamada
alugueis.xlsx
com os seguintes campos:
Planilha de exemplo
(alugueis.xlsx
):
|-----------|-------------------|--------------|--------------------|----------------|
| Imóvel | Inquilino | Valor Mensal | Data de Vencimento | Pago (Sim/Não) |
|-----------|-------------------|--------------|--------------------|----------------|
| Apto 101 | João da Silva | 1800 | 2025-06-10 | Sim |
| Casa 202 | Maria Souza | 2500 | 2025-06-15 | Não |
| Loja 303 | Pedro Lima | 3200 | 2025-06-20 | Não |
| Apto 104 | Ana Martins | 2000 | 2025-06-12 | Sim |
| Casa 205 | Bruno Carvalho | 2700 | 2025-06-18 | Não |
| Loja 307 | Carla Mendes | 3500 | 2025-06-25 | Sim |
| Apto 110 | Felipe Gonçalves | 2100 | 2025-06-14 | Não |
| Casa 208 | Luciana Ferreira | 2600 | 2025-06-22 | Não |
|-----------|-------------------|--------------|--------------------|----------------|
Desafio:
Crie um script Python que:
alugueis.xlsx
.relatorio_inadimplentes.xlsx
apenas com os
inadimplentes.Exemplo de Código Python:
import pandas as pd
import os
= r'C:\dev\python_escritorios\codes\relatorio_inadimplentes.xlsx'
relatorio_path # 1. Importar bibliotecas
# Importar bibliotecas necessárias
# Apagar o relatório anterior, se existir
if os.path.exists(relatorio_path):
os.remove(relatorio_path)
# 2. Ler a planilha de aluguéis
= pd.read_excel(r'C:\dev\python_escritorios\codes\alugueis.xlsx')
df
# 3. Filtrar inadimplentes
= df[df['Pago (Sim/Não)'] == 'Não']
inadimplentes
# 4. Salvar relatório dos inadimplentes
r'C:\dev\python_escritorios\codes\relatorio_inadimplentes.xlsx', index=False)
inadimplentes.to_excel(
# 5. Simular envio de e-mails
for _, row in inadimplentes.iterrows():
print(f"Enviando e-mail para {row['Inquilino']}:")
print(f"Prezado(a) {row['Inquilino']}, seu aluguel do imóvel {row['Imóvel']} no valor de R$ {row['Valor Mensal']} está em aberto. Vencimento: {row['Data de Vencimento']}.")
print("------------------------------\n")
# 6. Calcular total de aluguéis em aberto
= inadimplentes['Valor Mensal'].sum()
total_inadimplentes print(f"Total de aluguéis em aberto: R$ {total_inadimplentes}")
# 7. Calcular total de aluguéis pagos
= df[df['Pago (Sim/Não)'] == 'Sim']['Valor Mensal'].sum()
total_pagos print(f"Total de aluguéis pagos: R$ {total_pagos}")
# 8. Calcular total geral de aluguéis
= df['Valor Mensal'].sum()
total_geral print(f"Total geral de aluguéis: R$ {total_geral}")
# 9. Calcular porcentagem de inadimplência
= (total_inadimplentes / total_geral) * 100 if total_geral > 0 else 0
porcentagem_inadimplencia print(f"Porcentagem de inadimplência: {porcentagem_inadimplencia:.2f}%")
# 10. Exibir relatório final
print("\nRelatório Final:")
print(f"Total de aluguéis em aberto: R$ {total_inadimplentes}")
print(f"Total de aluguéis pagos: R$ {total_pagos}")
print(f"Total geral de aluguéis: R$ {total_geral}")
# 11. Salvar relatório final
= {
relatorio_final 'Total Aluguéis em Aberto': [total_inadimplentes],
'Total Aluguéis Pagos': [total_pagos],
'Total Geral de Aluguéis': [total_geral],
'Porcentagem de Inadimplência': [porcentagem_inadimplencia]
}= pd.DataFrame(relatorio_final)
relatorio_df r'C:\dev\python_escritorios\codes\relatorio_final.xlsx', index=False)
relatorio_df.to_excel(
# 12. Exibir mensagem de conclusão
print("Relatório final salvo com sucesso em 'relatorio_final.xlsx'.")
# 13. Fim do script
print("Processamento concluído.")
Além de gerar o relatório de inadimplentes, é possível automatizar o envio de e-mails reais para cada inquilino com aluguel em aberto utilizando Python.
Como fazer:
Adicione uma coluna “E-mail” na planilha
alugueis.xlsx
com o endereço de e-mail de cada
inquilino.
Utilize a biblioteca smtplib
do
Python para enviar e-mails automáticos. É recomendado utilizar uma conta
de e-mail dedicada e, no caso do Gmail, gerar uma senha de aplicativo
para maior segurança.
Exemplo de código Python:
O código completo para geração do relatório de inadimplentes e envio
real de e-mails está disponível no arquivo:
Código Python para envio de e-mails:
codes/03_exemplo_pratico_alugueis_com_email.py
|-----------|-------------------|--------------|--------------------|----------------|----------------------|
| Imóvel | Inquilino | Valor Mensal | Data de Vencimento | Pago (Sim/Não) | E-mail |
|-----------|-------------------|--------------|--------------------|----------------|----------------------|
| Apto 101 | João da Silva | 1800 | 2025-06-10 | Sim | joao@email.com |
| Casa 202 | Maria Souza | 2500 | 2025-06-15 | Não | maria@email.com |
| Loja 303 | Pedro Lima | 3200 | 2025-06-20 | Não | pedro@email.com |
| Apto 104 | Ana Martins | 2000 | 2025-06-12 | Sim | ana@email.com |
| Casa 205 | Bruno Carvalho | 2700 | 2025-06-18 | Não | bruno@email.com |
| Loja 307 | Carla Mendes | 3500 | 2025-06-25 | Sim | carla@email.com |
| Apto 110 | Felipe Gonçalves | 2100 | 2025-06-14 | Não | felipe@email.com |
| Casa 208 | Luciana Ferreira | 2600 | 2025-06-22 | Não | luciana@email.com |
|-----------|-------------------|--------------|--------------------|----------------|----------------------|
Atenção:
Com essa automação, a empresa pode agilizar a comunicação com os inquilinos inadimplentes, tornando o processo mais eficiente e reduzindo o tempo gasto com cobranças manuais.
Conclusão:
Com este exercício, você praticou a leitura e escrita de arquivos Excel, filtragem de dados com pandas. Essas habilidades são essenciais para automatizar o controle de inadimplência em empresas de aluguel de imóveis, tornando o processo mais eficiente e organizado.
História Fictícia:
A repartição pública “Prefeitura Municipal de Campo Largo, do Estado do
Paraná” recebe diariamente diversos documentos em PDF, como ofícios,
requerimentos e certidões. A servidora Ana precisa extrair rapidamente o
texto de um ofício em PDF para copiar o conteúdo para um sistema
interno, mas fazer isso manualmente toma muito tempo.
Desafio:
Ajude Ana a automatizar esse processo criando um script Python que:
oficio_exemplo.pdf
localizado na pasta codes
.oficio_extraido.txt
na mesma pasta.Dica:
Utilize a biblioteca PyPDF2
para a extração de texto de
arquivos PDF.
Código Python:
import PyPDF2
# Caminho do arquivo PDF
= r'C:\dev\python_escritorios\codes\oficio_exemplo.pdf'
pdf_path = r'C:\dev\python_escritorios\codes\oficio_extraido.txt'
txt_path
# Abrir o PDF e extrair texto
with open(pdf_path, 'rb') as file:
= PyPDF2.PdfReader(file)
reader = ""
texto for page in reader.pages:
+= page.extract_text()
texto
# Salvar o texto extraído em um arquivo .txt
with open(txt_path, 'w', encoding='utf-8') as f:
f.write(texto)
# Mostrar as primeiras linhas do texto extraído
print("Primeiras linhas do texto extraído:")
print('\n'.join(texto.splitlines()[:10]))
Observação:
Certifique-se de instalar a biblioteca com
pip install PyPDF2
antes de executar o script.
Resultado esperado:
OFÍCIO Nº 123/2025 – GAB/PMNE
Campo Largo, 17 de junho de 2025.
Ao
Senhor Diretor do Departamento de Recursos Humanos
Prefeitura Municipal de Campo Largo
Assunto: Solicitação de atualização cadastral
Prezado Senhor,
Solicito, por meio deste ofício, a gentileza de proceder à atualização dos dados
cadastrais do servidor João da Silva, matrícula 4567, lotado no setor de Protocolo.
Informo que houve alteração de endereço residencial e número de telefone para
contato.
Segue em anexo a documentação comprobatória.
Atenciosamente,
Maria Souza
Chefe de Gabinete
Prefeitura Municipal de Campo Largo
Conclusão:
Com este exercício, você praticou a leitura de arquivos PDF e a extração de texto usando Python. Essa habilidade é útil para automatizar a coleta de informações de documentos oficiais, economizando tempo e aumentando a eficiência no trabalho com repartições públicas.
História Fictícia:
O escritório de advocacia “Silva & Associados” recebe frequentemente
minutas de contratos em formato Word, enviadas por clientes e parceiros.
A advogada Júlia precisa revisar rapidamente esses contratos para
garantir que todos contenham uma cláusula padrão de confidencialidade.
Para agilizar o processo, ela deseja um script Python que leia o arquivo
Word do contrato, verifique se a cláusula está presente e, caso não
esteja, adicione automaticamente a cláusula ao final do documento.
Desafio:
Crie um script Python que:
Leia um arquivo Word chamado contrato_exemplo.docx
localizado na pasta codes
.
Verifique se o texto da cláusula de confidencialidade está presente.
Caso não esteja, adicione a seguinte cláusula ao final do documento:
Cláusula de Confidencialidade: As partes se comprometem a manter em sigilo todas as informações trocadas em razão deste contrato, não podendo divulgá-las a terceiros sem prévia autorização por escrito.
Salve o documento modificado como
contrato_confidencial.docx
na mesma pasta.
Dica:
Utilize a biblioteca python-docx
para manipulação de
arquivos Word.
Código Python:
from docx import Document
# Caminho do arquivo Word
= r'C:\dev\python_escritorios\codes\contrato_exemplo.docx'
doc_path = r'C:\dev\python_escritorios\codes\contrato_confidencial.docx'
doc_novo_path # Cláusula de confidencialidade
= (
clausa_confidencialidade "Cláusula de Confidencialidade: As partes se comprometem a manter em sigilo "
"todas as informações trocadas em razão deste contrato, não podendo divulgá-las "
"a terceiros sem prévia autorização por escrito."
)# Abrir o documento Word
= Document(doc_path)
doc # Verificar se a cláusula já existe
= any(clausa_confidencialidade in par.text for par in doc.paragraphs)
clausula_presente if not clausula_presente:
# Adicionar a cláusula de confidencialidade ao final do documento
doc.add_paragraph(clausa_confidencialidade)print("Cláusula de confidencialidade adicionada ao contrato.")
else:
print("Cláusula de confidencialidade já está presente no contrato.")
# Salvar o documento modificado
doc.save(doc_novo_path)# Exibir mensagem de conclusão
print(f"Documento modificado salvo como '{doc_novo_path}'")
Resultado esperado:
Cláusula de confidencialidade adicionada ao contrato.
Documento modificado salvo como 'C:\dev\python_escritorios\codes\contrato_confidencial.docx'
Conclusão:
Com este exercício, você praticou a leitura e modificação de arquivos Word usando Python. Essa habilidade é útil para automatizar a revisão de documentos legais, garantindo que cláusulas importantes estejam sempre presentes, economizando tempo e aumentando a eficiência no trabalho de advogados e escritórios de advocacia.
Nesta seção, você aprenderá a automatizar o envio de e-mails e notificações usando Python. Essa habilidade é essencial para manter a comunicação eficiente em escritórios, seja para enviar lembretes, relatórios ou avisos importantes.
Para enviar e-mails com Python, você pode usar a biblioteca
smtplib
, que permite enviar mensagens através do protocolo
SMTP. Abaixo está um exemplo básico de como enviar um e-mail:
import smtplib
from email.mime.text import MIMEText
# Configurações do servidor SMTP
= 'smtp.gmail.com'
smtp_server = 587
smtp_port = 'seu_email@gmail.com'
smtp_user = 'sua_senha'
smtp_password # Função para enviar e-mail
def enviar_email(destinatario, assunto, corpo):
# Criar o objeto de mensagem
= MIMEText(corpo)
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[# Enviar o e-mail
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg) # Exemplo de uso
'destinatario@example.com', 'Assunto do E-mail', 'Corpo do e-mail') enviar_email(
Para enviar e-mails com anexos, você pode usar a biblioteca
email
para criar mensagens mais complexas. Veja o exemplo
abaixo:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# Configurações do servidor SMTP
= 'smtp.gmail.com'
smtp_server = 587
smtp_port = 'seu_email@gmail.com'
smtp_user = 'sua_senha'
smtp_password # Função para enviar e-mail com anexo
def enviar_email_com_anexo(destinatario, assunto, corpo, caminho_anexo):
# Criar o objeto de mensagem
= MIMEMultipart()
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[# Adicionar o corpo do e-mail
'plain'))
msg.attach(MIMEText(corpo, # Adicionar o anexo
with open(caminho_anexo, 'rb') as anexo:
= MIMEBase('application', 'octet-stream')
parte
parte.set_payload(anexo.read())
encoders.encode_base64(parte)'Content-Disposition', f'attachment; filename={caminho_anexo.split("/")[-1]}')
parte.add_header(
msg.attach(parte)# Enviar o e-mail
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)# Exemplo de uso
enviar_email_com_anexo('destinatario@example.com',
'Assunto do E-mail com Anexo',
'Corpo do e-mail com anexo',
'caminho/para/o/anexo.txt'
)
Para enviar notificações por e-mail, você pode usar a função
enviar_email
que criamos anteriormente. Veja um exemplo de
como enviar um lembrete de reunião:
enviar_email('destinatario@example.com',
'Lembrete de Reunião',
'Este é um lembrete de que você tem uma reunião agendada para amanhã às 10h.'
)
Para que os exemplos de envio de e-mails funcionem, você precisa ter
o Python instalado em seu ambiente, bem como as bibliotecas necessárias.
Você pode instalar as bibliotecas usando o gerenciador de pacotes
pip
. Execute o seguinte comando no terminal:
pip install secure-smtplib email
Nesta seção, você encontrará exercícios práticos para aplicar os conceitos aprendidos sobre automação de e-mails e notificações. Esses exercícios são projetados para serem desafiadores e ajudarão a consolidar seu conhecimento em automação de comunicação por e-mail.
História: A empresa “Tech Solutions” precisa enviar
relatórios diários de vendas para a equipe de gerência. O relatório é
gerado em um arquivo Excel chamado relatorio_vendas.xlsx
,
que contém as vendas do dia anterior. A gerente Ana deseja automatizar o
envio desse relatório por e-mail todas as manhãs.
Desafio: Crie um script Python que:
relatorio_vendas.xlsx
localizado na
pasta codes
.ana@techsolutions.com
.Código Python:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import pandas as pd
from datetime import datetime
import os
# Configurações do servidor SMTP
= 'smtp.gmail.com'
smtp_server = 587
smtp_port = 'seu_email@gmail.com'
smtp_user = 'sua_senha'
smtp_password
# Função para enviar e-mail com anexo
def enviar_email_com_anexo(destinatario, assunto, corpo, caminho_anexo):
# Criar o objeto de mensagem
= MIMEMultipart()
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[# Adicionar o corpo do e-mail
'plain'))
msg.attach(MIMEText(corpo, # Adicionar o anexo
with open(caminho_anexo, 'rb') as anexo:
= MIMEBase('application', 'octet-stream')
parte
parte.set_payload(anexo.read())
encoders.encode_base64(parte)'Content-Disposition', f'attachment; filename={caminho_anexo.split("/")[-1]}')
parte.add_header(
msg.attach(parte)# Enviar o e-mail
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Caminho do arquivo Excel
= r'C:\dev\python_escritorios\codes\relatorio_vendas.xlsx'
excel_path
# Ler o arquivo Excel existente
if os.path.exists(excel_path):
= pd.read_excel(excel_path)
df_vendas print(f"Arquivo de vendas encontrado em: {excel_path}")
# Exibir os dados de vendas no console para copiar e colar no Excel
print("\nCopie e cole os dados abaixo no Excel, se desejar:")
print(df_vendas.to_csv(sep='\t', index=False))
else:
print(f"Arquivo {excel_path} não encontrado. Certifique-se de que a planilha existe com os dados prontos.")
1)
exit(
# Enviar o e-mail com o relatório
= datetime.now().strftime('%d/%m/%Y')
data_atual = f'Relatório de Vendas - {data_atual}'
assunto = 'Prezada Ana, segue em anexo o relatório de vendas do dia anterior.'
corpo
enviar_email_com_anexo('ana@techsolutions.com',
assunto,
corpo,
excel_path
)print("E-mail enviado com sucesso!")
Resultado esperado:
Arquivo de vendas gerado em: C:\dev\python_escritorios\codes\relatorio_vendas.xlsx
Copie e cole os dados abaixo no Excel, se desejar:
Data Produto Quantidade Valor Total
25/10/2023 Notebook 5 15000.00
E-mail enviado com sucesso!
Observações:
seu_email@gmail.com
e sua_senha
pelas suas credenciais.pip install pandas faker openpyxl
Conclusão:
Com este exercício, você praticou o envio de e-mails com anexos usando Python. Essa habilidade é essencial para automatizar a comunicação de relatórios e documentos importantes em ambientes corporativos, economizando tempo e aumentando a eficiência na troca de informações.
História:
A empresa “Tech Solutions” deseja automatizar o envio de relatórios
diários de vendas, gerando arquivos separados para cada dia e enviando
todos juntos em um único e-mail para a gerente Ana.
Desafio:
Automatizar o processo de geração de dados fictícios de vendas para
vários dias, salvar um arquivo Excel para cada dia e enviar todos os
arquivos como anexos em um único e-mail.
Faker
.ana@techsolutions.com
).Código Python:
Veja o arquivo
codes/08_exemplo_pratico_envio_relatorio_diario.py
para o
exemplo completo.
Resumo do Aprendizado:
Ao automatizar o envio de e-mails, é importante considerar as implicações de segurança. O uso de senhas em texto claro, como mostrado nos exemplos, não é recomendado para ambientes de produção.
Uma abordagem mais segura é usar OAuth2 para autenticação. O OAuth2 é um protocolo de autorização que permite que aplicativos de terceiros acessem suas informações sem precisar compartilhar suas senhas.
Vantagens do OAuth2:
Como Usar OAuth2 com Python:
from oauth2client.service_account import ServiceAccountCredentials
import gspread
# Configurar o escopo e as credenciais
= ['https://www.googleapis.com/auth/spreadsheets']
escopo = ServiceAccountCredentials.from_json_keyfile_name('caminho/para/credenciais.json', escopo)
credenciais
# Autenticar e acessar o Google Sheets
= gspread.authorize(credenciais)
cliente = cliente.open('Nome da Planilha').sheet1
planilha
# Ler dados da planilha
= planilha.get_all_records()
dados print(dados)
Se você estiver usando o Gmail, é possível que precise permitir o acesso de “aplicativos menos seguros” para que o envio de e-mails funcione. No entanto, essa opção reduz a segurança da sua conta e não é recomendada.
Como Ativar:
Atenção:
Neste capítulo, você aprendeu sobre considerações de segurança ao automatizar o envio de e-mails. A utilização de OAuth2 é a abordagem recomendada para garantir a segurança das suas credenciais e informações.
Nesta seção, você aprenderá como extrair dados de sites e automatizar interações com páginas web utilizando Python. O web scraping permite coletar informações de páginas da internet de forma automatizada, facilitando tarefas como atualização de preços, monitoramento de concorrentes, coleta de dados públicos, entre outros. Além disso, a automação de sites possibilita simular ações humanas, como preencher formulários, clicar em botões e navegar por páginas automaticamente, tornando processos repetitivos mais rápidos e eficientes.
Você verá exemplos práticos usando as bibliotecas
requests
e BeautifulSoup
para extração de
dados, além de dicas para lidar com tabelas HTML e boas práticas para
respeitar as políticas dos sites.
Web scraping é o processo de extrair dados de sites. Com Python, você
pode usar bibliotecas como BeautifulSoup
e
requests
para realizar essa tarefa. Abaixo está um exemplo
básico de como fazer web scraping:
Código Python:
import requests
from bs4 import BeautifulSoup
# URL do site que você deseja extrair dados
= 'https://example.com'
url # Fazer uma requisição HTTP para obter o conteúdo da página
= requests.get(url)
response # Verificar se a requisição foi bem-sucedida
if response.status_code == 200:
# Analisar o conteúdo da página
= BeautifulSoup(response.text, 'html.parser')
soup # Extrair informações específicas
= soup.find_all('div', class_='informacao')
dados for dado in dados:
print(dado.text)
else:
print(f"Erro ao acessar o site: {response.status_code}")
Resultado esperado:
Informação 1
Informação 2
Informação 3
Ao realizar web scraping, é importante seguir algumas boas práticas para garantir que você não cause problemas ao site que está acessando e para respeitar as regras de uso. Aqui estão algumas dicas:
robots.txt
: Verifique se o
site permite scraping e quais páginas podem ser acessadas.User-Agent
na sua requisição para identificar seu script
como um navegador legítimo.Para extrair dados de tabelas HTML, você pode usar o
pandas
junto com BeautifulSoup
. Veja como
fazer isso:
Código Python:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# URL do site com a tabela
= 'https://example.com/tabela'
url # Fazer uma requisição HTTP para obter o conteúdo da página
= requests.get(url)
response # Verificar se a requisição foi bem-sucedida
if response.status_code == 200:
# Analisar o conteúdo da página
= BeautifulSoup(response.text, 'html.parser')
soup # Encontrar a tabela
= soup.find('table')
tabela # Ler a tabela usando pandas
= pd.read_html(str(tabela))[0]
df print(df) # Exibir os dados da tabela
else:
print(f"Erro ao acessar o site: {response.status_code}")
Resultado esperado:
Coluna1 Coluna2 Coluna3
0 Dado1 Dado2 Dado3
1 Dado4 Dado5 Dado6
2 Dado7 Dado8 Dado9
Após extrair os dados de uma tabela HTML, você pode manipulá-los
usando as funcionalidades do pandas
. Por exemplo, você pode
filtrar, agrupar ou transformar os dados conforme necessário.
Exemplo de manipulação de dados:
# Filtrar dados onde Coluna1 é igual a 'Dado1'
= df[df['Coluna1'] == 'Dado1']
dados_filtrados print(dados_filtrados)
Resultado esperado:
Coluna1 Coluna2 Coluna3
0 Dado1 Dado2 Dado3
O Selenium é uma das ferramentas mais poderosas para automação de navegadores web. Com ele, é possível simular praticamente qualquer ação que um usuário humano faria em um site: clicar em botões, preencher formulários, rolar páginas, fazer login, baixar arquivos e até mesmo interagir com elementos dinâmicos carregados por JavaScript.
Essa abordagem é especialmente útil para automatizar tarefas em sistemas web internos, portais de clientes, ou para coletar dados de sites que exigem autenticação ou navegação dinâmica. O Selenium suporta diversos navegadores, como Chrome, Firefox e Edge, e pode ser integrado a scripts Python para criar robôs de automação robustos.
Para usar o Selenium, instale a biblioteca e baixe o driver do navegador correspondente (por exemplo, ChromeDriver para Google Chrome):
pip install selenium
Baixe o ChromeDriver em: https://sites.google.com/chromium.org/driver/
O exemplo abaixo mostra como automatizar o login em um site e extrair informações após o acesso:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# Configurar o driver do navegador (certifique-se de que o ChromeDriver está no PATH)
= webdriver.Chrome() # ou webdriver.Firefox() para Firefox
driver
# Abrir a página de login
'https://example.com/login')
driver.get(
# Encontrar os campos de login e senha
= driver.find_element(By.NAME, 'username')
username_field = driver.find_element(By.NAME, 'password')
password_field
# Preencher os campos de login
'seu_usuario')
username_field.send_keys('sua_senha')
password_field.send_keys(
# Enviar o formulário (pressionar Enter)
password_field.send_keys(Keys.RETURN)
# Esperar alguns segundos para a página carregar após o login
5)
time.sleep(
# Extrair informações da página após o login
= driver.find_elements(By.CLASS_NAME, 'informacao')
dados for dado in dados:
print(dado.text)
# Fechar o navegador
driver.quit()
Resultado esperado:
Informação 1
Informação 2
Informação 3
time.sleep()
para aguardar carregamentos simples, ou
prefira WebDriverWait
para esperar elementos
específicos.By.ID
, By.NAME
,
By.CSS_SELECTOR
) para localizar elementos.driver.quit()
para liberar recursos do sistema.= driver.find_element(By.ID, 'botaoEnviar')
botao botao.click()
= driver.find_element(By.NAME, 'campoTexto')
campo_texto 'Texto a ser preenchido') campo_texto.send_keys(
from selenium.webdriver.support.ui import Select
= driver.find_element(By.ID, 'dropdown')
select_element = Select(select_element)
select 'Opção 1') select.select_by_visible_text(
'https://example.com/outra_pagina') driver.get(
Com o Selenium, você pode criar robôs que automatizam tarefas repetitivas em sistemas web, economizando tempo e reduzindo erros manuais em processos do escritório.
Nesta seção, você aprenderá a criar interfaces gráficas simples para suas aplicações de automação. Interfaces gráficas são importantes para tornar suas ferramentas mais amigáveis e acessíveis, permitindo que usuários interajam com suas automações de forma mais intuitiva.
Você verá exemplos de como criar janelas, botões, campos de texto e outros elementos gráficos usando as bibliotecas Tkinter e PyWebIO. Além disso, aprenderá a coletar entradas de usuários e exibir resultados de forma visual.
Tkinter é a biblioteca padrão do Python para criação de interfaces gráficas. Com ela, é possível criar janelas, diálogos, botões, menus e outros elementos gráficos de forma simples e rápida.
import tkinter as tk
# Função chamada ao clicar no botão
def ao_clicar():
print("Botão clicado!")
# Criar a janela principal
= tk.Tk()
janela "Minha Primeira Janela")
janela.title(
# Criar um botão e adicionar à janela
= tk.Button(janela, text="Clique Aqui", command=ao_clicar)
botao
botao.pack()
# Iniciar o loop da interface
janela.mainloop()
Resultado esperado:
Uma janela com um botão. Ao clicar no botão, a mensagem “Botão clicado!” deve aparecer no console.
É possível coletar entradas de usuário através de campos de texto, caixas de seleção, botões de opção, entre outros.
import tkinter as tk
# Função chamada ao clicar no botão
def mostrar_nome():
= entrada_nome.get()
nome =f"Olá, {nome}!")
label_resultado.config(text
# Criar a janela principal
= tk.Tk()
janela "Coletando Entradas")
janela.title(
# Criar um rótulo (label)
= tk.Label(janela, text="Digite seu nome:")
label_instrucoes
label_instrucoes.pack()
# Criar um campo de entrada de texto
= tk.Entry(janela)
entrada_nome
entrada_nome.pack()
# Criar um botão
= tk.Button(janela, text="Enviar", command=mostrar_nome)
botao
botao.pack()
# Criar um rótulo para exibir o resultado
= tk.Label(janela, text="")
label_resultado
label_resultado.pack()
# Iniciar o loop da interface
janela.mainloop()
Resultado esperado:
Uma janela com um campo de texto, um botão e um rótulo. O usuário deve digitar seu nome no campo de texto, clicar no botão e ver seu nome sendo exibido no rótulo.
PyWebIO é uma biblioteca que permite criar interfaces web interativas diretamente em scripts Python, sem a necessidade de conhecimentos em HTML ou CSS. É uma ótima opção para quem deseja criar rapidamente interfaces para suas aplicações de automação.
from pywebio import start_server
from pywebio.output import put_text
from pywebio.input import input
# Função principal da aplicação
def app():
= input("Qual é o seu nome?")
nome f"Olá, {nome}! Bem-vindo à automação com Python.")
put_text(
# Iniciar o servidor web
=8080) start_server(app, port
Resultado esperado:
Ao executar o script, um servidor web será iniciado. Acesse
http://localhost:8080
no navegador para interagir com a
aplicação.
Tanto no Tkinter quanto no PyWebIO, é possível criar formulários para coletar informações de usuários.
import tkinter as tk
# Função chamada ao enviar o formulário
def enviar_formulario():
= entrada_nome.get()
nome = entrada_email.get()
email print(f"Nome: {nome}, Email: {email}")
# Criar a janela principal
= tk.Tk()
janela "Formulário de Contato")
janela.title(
# Criar campos de entrada
= tk.Label(janela, text="Nome:")
label_nome
label_nome.pack()= tk.Entry(janela)
entrada_nome
entrada_nome.pack()
= tk.Label(janela, text="Email:")
label_email
label_email.pack()= tk.Entry(janela)
entrada_email
entrada_email.pack()
# Criar botão de envio
= tk.Button(janela, text="Enviar", command=enviar_formulario)
botao_enviar
botao_enviar.pack()
# Iniciar o loop da interface
janela.mainloop()
from pywebio import start_server
from pywebio.input import input_group
from pywebio.output import put_text
# Função principal da aplicação
def app():
= input_group("Formulário de Contato", [
dados input("Nome:"),
input("Email:")
])f"Nome: {dados[0]}, Email: {dados[1]}")
put_text(
# Iniciar o servidor web
=8080) start_server(app, port
Nesta parte do livro, você aprenderá como aplicar os conceitos de automação em ambientes de escritório, focando em tarefas comuns que podem ser automatizadas para aumentar a eficiência, reduzir erros e liberar tempo para atividades mais estratégicas. Serão apresentados exemplos práticos e projetos reais, organizados por tipo de escritório, para que você possa adaptar as soluções à sua realidade profissional.
Ao longo dos próximos capítulos, você verá como automatizar:
Cada seção traz exemplos práticos, dicas e exercícios para consolidar o aprendizado e estimular a criatividade na busca por novas automações.
Os escritórios de advocacia lidam diariamente com uma grande quantidade de documentos, prazos processuais e consultas a sistemas jurídicos. A automação dessas tarefas pode trazer ganhos significativos de produtividade, reduzir erros e liberar tempo para atividades mais estratégicas, como o atendimento ao cliente e a elaboração de peças jurídicas.
Neste capítulo, você aprenderá como aplicar Python para automatizar processos comuns em escritórios de advocacia, tornando o trabalho mais eficiente e seguro. Serão apresentados exemplos práticos que podem ser adaptados à rotina de diferentes escritórios, facilitando a gestão de documentos, o controle de prazos e a consulta a sites de tribunais.
A seguir, você verá como automatizar:
A criação de procurações e petições é uma tarefa comum e essencial no
dia a dia de um escritório de advocacia. No entanto, preencher esses
documentos manualmente pode ser demorado e sujeito a erros. Neste
exemplo, vamos mostrar como automatizar a geração de procurações e
petições a partir de modelos pré-definidos, utilizando Python e a
biblioteca docx
para manipulação de arquivos do Word.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_modelo()
: Para ler o arquivo modelo da procuração
ou petição.preencher_documento()
: Para substituir os campos
variáveis pelas informações do cliente.salvar_documento()
: Para salvar o documento preenchido
com um novo nome.from docx import Document
# Função para ler o modelo de documento
def ler_modelo(caminho_modelo):
return Document(caminho_modelo)
# Função para preencher o documento com os dados do cliente
def preencher_documento(doc, dados_cliente):
for par in doc.paragraphs:
for chave, valor in dados_cliente.items():
if f'{{{{{chave}}}}}' in par.text:
= par.text.replace(f'{{{{{chave}}}}}', valor)
par.text return doc
# Função para salvar o documento preenchido
def salvar_documento(doc, caminho_saida):
doc.save(caminho_saida)
# Exemplo de uso
= 'modelo_procuracao.docx'
modelo_path = 'procuracao_preenchida.docx'
saida_path = {
dados_cliente 'nome': 'João da Silva',
'cpf': '123.456.789-00',
'data': '01/06/2025'
}
# Ler o modelo
= ler_modelo(modelo_path)
doc # Preencher o documento
= preencher_documento(doc, dados_cliente)
doc_preenchido # Salvar o documento preenchido
salvar_documento(doc_preenchido, saida_path)
print(f"Procuração gerada com sucesso: {saida_path}")
A automação da geração de procurações e petições pode trazer ganhos significativos de produtividade para escritórios de advocacia, além de reduzir a possibilidade de erros na elaboração desses documentos. Com o uso de modelos e a automação do preenchimento, é possível agilizar o trabalho e garantir maior precisão e padronização nos documentos gerados.
O controle de prazos processuais é uma atividade crítica para escritórios de advocacia, pois o não cumprimento de prazos pode resultar em prejuízos financeiros e danos à reputação do escritório. Neste exemplo, vamos mostrar como automatizar o controle de prazos processuais, utilizando Python para ler planilhas com os prazos e enviar alertas por e-mail quando os prazos estiverem se aproximando.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_planilha()
: Para ler o arquivo da planilha com os
prazos processuais.verificar_prazos()
: Para identificar quais prazos estão
próximos do vencimento.enviar_alertas()
: Para enviar os e-mails de
alerta.import pandas as pd
import smtplib
from email.mime.text import MIMEText
from datetime import datetime, timedelta
# Função para ler a planilha de prazos
def ler_planilha(caminho_arquivo):
return pd.read_excel(caminho_arquivo)
# Função para verificar prazos próximos do vencimento
def verificar_prazos(df, dias_aviso=3):
= datetime.now()
hoje = df[(df['Data de Término'] - hoje).dt.days <= dias_aviso]
proximos_prazos return proximos_prazos
# Função para enviar e-mail de alerta
def enviar_alertas(df_prazos, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port for _, row in df_prazos.iterrows():
= row['Email']
destinatario = f"Aviso de Prazo Processual - {row['Número do Processo']}"
assunto = f"Prezado(a),\n\nEste é um aviso de que o prazo processual referente ao processo {row['Número do Processo']} está se aproximando.\nData de Término: {row['Data de Término'].strftime('%d/%m/%Y')}\n\nAtenciosamente,"
corpo
= MIMEText(corpo)
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= 'prazos_processuais.xlsx'
caminho_planilha = ler_planilha(caminho_planilha)
df = verificar_prazos(df)
df_prazos_proximos
# Enviar alertas (descomente a linha abaixo para enviar os e-mails)
# enviar_alertas(df_prazos_proximos, 'seu_email@gmail.com', 'sua_senha')
print("Processamento concluído.")
A automação do controle de prazos processuais pode trazer maior eficiência e segurança para escritórios de advocacia, reduzindo o risco de perda de prazos importantes e melhorando a comunicação com os clientes. Com o uso de planilhas e o envio automático de alertas por e-mail, é possível manter o controle dos prazos de forma organizada e prática.
A consulta a sites de tribunais é uma atividade rotineira em escritórios de advocacia, utilizada para acompanhar o andamento de processos, verificar publicações e obter informações atualizadas sobre casos judiciais. Neste exemplo, vamos mostrar como automatizar a consulta a sites de tribunais, utilizando Python para acessar as informações de forma rápida e eficiente.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
acessar_site()
: Para acessar o site do tribunal.buscar_processo()
: Para realizar a busca pelo
processo.extrair_informacoes()
: Para extrair as informações
relevantes sobre o processo.import requests
from bs4 import BeautifulSoup
# Função para acessar o site do tribunal
def acessar_site(url):
= requests.get(url)
response if response.status_code == 200:
return response.text
else:
raise Exception(f"Erro ao acessar o site: {response.status_code}")
# Função para buscar o processo
def buscar_processo(html, numero_processo):
= BeautifulSoup(html, 'html.parser')
soup = soup.find('input', {'name': 'numero_processo'})
campo_busca if campo_busca:
# Simular a busca pelo processo
return f"Processo {numero_processo} encontrado."
else:
return "Campo de busca não encontrado."
# Função para extrair informações do processo
def extrair_informacoes(html):
= BeautifulSoup(html, 'html.parser')
soup = {}
informacoes # Extrair informações relevantes (exemplo: número do processo, partes, advogado, etc.)
'numero_processo'] = soup.find('h1').text
informacoes['partes'] = [parte.text for parte in soup.find_all('div', class_='parte')]
informacoes[return informacoes
# Exemplo de uso
= 'https://www.tjsp.jus.br/'
url = '1234567890'
numero_processo = acessar_site(url)
html_site = buscar_processo(html_site, numero_processo)
resultado_busca
print(resultado_busca)
A automação da consulta a sites de tribunais pode trazer maior agilidade e eficiência para escritórios de advocacia, permitindo o acompanhamento em tempo real dos processos e a obtenção rápida de informações relevantes. Com o uso de web scraping e automação de navegação, é possível simplificar e otimizar essa tarefa rotineira.
Os escritórios de contabilidade desempenham um papel fundamental na gestão financeira de empresas e profissionais autônomos. Além de garantir o cumprimento das obrigações fiscais, esses escritórios são responsáveis por organizar documentos, gerar relatórios, calcular impostos e manter o controle sobre receitas e despesas. Com o avanço da tecnologia, a automação dessas tarefas tornou-se essencial para aumentar a produtividade, reduzir erros e liberar tempo para atividades mais estratégicas.
Neste capítulo, você aprenderá como aplicar Python para automatizar processos comuns em escritórios de contabilidade, tornando o dia a dia mais eficiente e seguro. Serão apresentados exemplos práticos que podem ser adaptados à realidade de diferentes negócios, facilitando a rotina contábil e proporcionando maior agilidade no atendimento aos clientes.
A seguir, você verá como automatizar:
A leitura e consolidação de extratos bancários é uma tarefa essencial para a gestão financeira de empresas, permitindo o acompanhamento de receitas, despesas e saldos. Neste exemplo, vamos mostrar como automatizar a leitura de extratos bancários em formato CSV e a consolidação das informações em um relatório financeiro.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_extrato()
: Para ler o arquivo CSV do extrato
bancário.consolidar_extratos()
: Para consolidar as informações
de múltiplos extratos.gerar_relatorio()
: Para gerar o relatório
financeiro.import pandas as pd
import glob
# Função para ler o extrato bancário
def ler_extrato(caminho_arquivo):
return pd.read_csv(caminho_arquivo, sep=';', encoding='latin1')
# Função para consolidar extratos
def consolidar_extratos(pasta_extratos):
= glob.glob(f"{pasta_extratos}/*.csv")
arquivos = [ler_extrato(arquivo) for arquivo in arquivos]
extratos return pd.concat(extratos, ignore_index=True)
# Função para gerar o relatório financeiro
def gerar_relatorio(df_consolidado):
= df_consolidado.groupby('Tipo')['Valor'].sum().reset_index()
relatorio 'relatorio_financeiro.csv', index=False, sep=';')
relatorio.to_csv(print("Relatório financeiro gerado: relatorio_financeiro.csv")
# Exemplo de uso
= 'extratos_bancarios'
pasta_extratos = consolidar_extratos(pasta_extratos)
df_consolidado gerar_relatorio(df_consolidado)
A automação da leitura e consolidação de extratos bancários pode trazer maior eficiência e precisão para a gestão financeira de empresas, facilitando o acompanhamento de receitas e despesas. Com o uso de arquivos CSV e a automação do processamento de dados, é possível simplificar e otimizar essa tarefa contábil.
A geração de guias de impostos é uma obrigação periódica para empresas, sendo essencial para a regularidade fiscal e o cumprimento das obrigações tributárias. Neste exemplo, vamos mostrar como automatizar a geração de guias de impostos, utilizando Python para calcular os valores devidos e gerar os documentos necessários.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
calcular_impostos()
: Para calcular os impostos
devidos.gerar_guia_pagamento()
: Para gerar a guia de pagamento
do imposto.# Função para calcular os impostos devidos
def calcular_impostos(receitas, despesas, aliquota_imposto):
= receitas - despesas
lucro = lucro * aliquota_imposto
imposto_devido return imposto_devido
# Função para gerar a guia de pagamento do imposto
def gerar_guia_pagamento(imposto_devido, caminho_saida):
with open(caminho_saida, 'w') as file:
file.write(f"Guia de Pagamento de Imposto\n")
file.write(f"Valor do Imposto Devido: R$ {imposto_devido:.2f}\n")
print(f"Guia de pagamento gerada: {caminho_saida}")
# Exemplo de uso
= 10000
receitas = 5000
despesas = 0.15 # 15%
aliquota_imposto
= calcular_impostos(receitas, despesas, aliquota_imposto)
imposto_devido 'guia_pagamento_imposto.txt') gerar_guia_pagamento(imposto_devido,
A automação da geração de guias de impostos pode trazer maior agilidade e precisão para o cumprimento das obrigações tributárias das empresas, reduzindo o risco de erros e atrasos. Com o uso de cálculos automáticos e a geração de documentos, é possível simplificar e otimizar essa tarefa contábil.
O envio de boletos por e-mail é uma prática comum e eficiente para a cobrança de clientes, facilitando o recebimento e melhorando o fluxo de caixa das empresas. Neste exemplo, vamos mostrar como automatizar o envio de boletos por e-mail, utilizando Python para gerar os boletos e enviá-los automaticamente para os clientes.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
gerar_boleto()
: Para gerar o boleto bancário.enviar_boleto_email()
: Para enviar o boleto por
e-mail.import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# Função para gerar o boleto bancário
def gerar_boleto(dados_boleto, caminho_saida):
= pd.DataFrame([dados_boleto])
df_boleto =False, sep=';')
df_boleto.to_csv(caminho_saida, indexprint(f"Boleto gerado: {caminho_saida}")
# Função para enviar o boleto por e-mail
def enviar_boleto_email(destinatario, assunto, corpo, caminho_boleto, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port # Criar o objeto de mensagem
= MIMEMultipart()
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[# Adicionar o corpo do e-mail
'plain'))
msg.attach(MIMEText(corpo, # Adicionar o anexo
with open(caminho_boleto, 'rb') as anexo:
= MIMEBase('application', 'octet-stream')
parte
parte.set_payload(anexo.read())
encoders.encode_base64(parte)'Content-Disposition', f'attachment; filename={caminho_boleto.split("/")[-1]}')
parte.add_header(
msg.attach(parte)# Enviar o e-mail
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= {
dados_boleto 'Cliente': 'João da Silva',
'Valor': 150.00,
'Vencimento': '2025-06-10'
}= 'boleto_joao_silva.csv'
caminho_boleto
gerar_boleto(dados_boleto, caminho_boleto)
# Enviar o boleto por e-mail (descomente a linha abaixo para enviar o e-mail)
# enviar_boleto_email('joao@email.com', 'Seu Boleto', 'Segue em anexo o boleto.', caminho_boleto, 'seu_email@gmail.com', 'sua_senha')
A automação do envio de boletos por e-mail pode trazer maior eficiência e agilidade para o processo de cobrança, melhorando o fluxo de caixa e a relação com os clientes. Com o uso de geração automática de boletos e envio programático por e-mail, é possível simplificar e otimizar essa tarefa financeira.
Os escritórios de logística são responsáveis pelo planejamento, execução e controle das operações de transporte e armazenamento de mercadorias, buscando sempre a eficiência, a redução de custos e a satisfação dos clientes. A automação pode transformar a rotina desses escritórios, trazendo mais agilidade, precisão e rastreabilidade para os processos logísticos.
Nesta seção, você aprenderá como aplicar Python para automatizar tarefas comuns em logística, desde a leitura e geração de documentos até o acompanhamento de entregas e roteirização de rotas. Os exemplos apresentados foram pensados para resolver desafios reais enfrentados por profissionais da área, mostrando como a tecnologia pode ser uma grande aliada na otimização das operações.
A seguir, você verá como automatizar:
A leitura e geração de manifestos é uma atividade importante para o transporte de mercadorias, sendo essencial para a conformidade fiscal e o rastreamento das operações de transporte. Neste exemplo, vamos mostrar como automatizar a leitura de manifestos em formato XML e PDF, e a geração de novos manifestos com base nas informações lidas.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_manifesto_xml()
: Para ler o manifesto em formato
XML.gerar_manifesto_pdf()
: Para gerar o novo manifesto em
formato PDF.import xml.etree.ElementTree as ET
from fpdf import FPDF
# Função para ler o manifesto em formato XML
def ler_manifesto_xml(caminho_arquivo):
= ET.parse(caminho_arquivo)
tree = tree.getroot()
root = {
dados_manifesto 'remetente': root.find('remetente').text,
'destinatario': root.find('destinatario').text,
'peso': root.find('peso').text,
'valor_frete': root.find('valor_frete').text
}return dados_manifesto
# Função para gerar o manifesto em formato PDF
def gerar_manifesto_pdf(dados_manifesto, caminho_saida):
= FPDF()
pdf
pdf.add_page()"Arial", size=12)
pdf.set_font(for chave, valor in dados_manifesto.items():
0, 10, f"{chave}: {valor}", ln=True)
pdf.cell(
pdf.output(caminho_saida)print(f"Manifesto gerado: {caminho_saida}")
# Exemplo de uso
= 'manifesto.xml'
caminho_xml = 'manifesto.pdf'
caminho_pdf = ler_manifesto_xml(caminho_xml)
dados_manifesto gerar_manifesto_pdf(dados_manifesto, caminho_pdf)
A automação da leitura e geração de manifestos pode trazer maior eficiência e precisão para as operações de transporte, facilitando o cumprimento das obrigações fiscais e o rastreamento das mercadorias. Com o uso de arquivos XML e PDF, e a automação do processamento e geração de documentos, é possível simplificar e otimizar essa tarefa logística.
A roteirização é uma atividade fundamental para a otimização do transporte de mercadorias, permitindo a definição das melhores rotas a serem seguidas pelos veículos. Neste exemplo, vamos mostrar como automatizar a roteirização com base em distância, utilizando APIs como Google Maps ou OpenRoute.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
calcular_rota_google_maps()
: Para calcular a rota
utilizando a API do Google Maps.calcular_rota_openroute()
: Para calcular a rota
utilizando a API do OpenRoute.import requests
# Função para calcular a rota utilizando a API do Google Maps
def calcular_rota_google_maps(origem, destino, chave_api):
= f"https://maps.googleapis.com/maps/api/directions/json?origin={origem}&destination={destino}&key={chave_api}"
url = requests.get(url)
response = response.json()
dados if dados['status'] == 'OK':
= dados['routes'][0]
rota = rota['legs'][0]['distance']['text']
distancia = rota['legs'][0]['duration']['text']
tempo return f"Distância: {distancia}, Tempo: {tempo}"
else:
return "Erro ao calcular a rota."
# Função para calcular a rota utilizando a API do OpenRoute
def calcular_rota_openroute(origem, destino):
= f"https://api.openrouteservice.org/v2/directions/driving-car?api_key=sua_chave_api&start={origem}&end={destino}"
url = requests.get(url)
response = response.json()
dados if dados['routes']:
= dados['routes'][0]
rota = rota['summary']['length']
distancia = rota['summary']['duration']
tempo return f"Distância: {distancia} metros, Tempo: {tempo} segundos"
else:
return "Erro ao calcular a rota."
# Exemplo de uso
= "-23.550520, -46.633308" # São Paulo
origem = "-22.906847, -43.172896" # Rio de Janeiro
destino # Calcular rota pelo Google Maps
= calcular_rota_google_maps(origem, destino, 'sua_chave_api_google_maps')
resultado_google_maps print("Google Maps:", resultado_google_maps)
# Calcular rota pelo OpenRoute
= calcular_rota_openroute(origem, destino)
resultado_openroute print("OpenRoute:", resultado_openroute)
A automação da roteirização com base em distância pode trazer ganhos significativos de eficiência e economia para as operações de transporte, permitindo a definição de rotas otimizadas e a redução de custos com combustível e tempo de viagem. Com o uso de APIs de mapeamento e a automação do processamento das informações, é possível simplificar e otimizar essa tarefa logística.
O acompanhamento de entregas é uma atividade importante para garantir a satisfação dos clientes e a eficiência das operações de logística. Neste exemplo, vamos mostrar como automatizar o acompanhamento de entregas, utilizando Python para ler planilhas com os dados das entregas e enviar notificações automáticas.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_planilha_entregas()
: Para ler a planilha com os
dados das entregas.enviar_notificacoes()
: Para enviar as notificações
automáticas.import pandas as pd
import smtplib
from email.mime.text import MIMEText
# Função para ler a planilha de entregas
def ler_planilha_entregas(caminho_arquivo):
return pd.read_excel(caminho_arquivo)
# Função para enviar notificações automáticas
def enviar_notificacoes(df_entregas, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port for _, row in df_entregas.iterrows():
= row['Email']
destinatario = f"Atualização sobre sua entrega - {row['Código da Entrega']}"
assunto = f"Prezado(a),\n\nInformamos que o status da sua entrega {row['Código da Entrega']} foi atualizado para: {row['Status']}.\n\nAtenciosamente,"
corpo
= MIMEText(corpo)
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= 'entregas.xlsx'
caminho_planilha = ler_planilha_entregas(caminho_planilha)
df_entregas # Enviar notificações (descomente a linha abaixo para enviar os e-mails)
# enviar_notificacoes(df_entregas, 'seu_email@gmail.com', 'sua_senha')
print("Processamento concluído.")
A automação do acompanhamento de entregas pode trazer maior eficiência e agilidade para as operações de logística, melhorando a comunicação com os clientes e a gestão das entregas. Com o uso de planilhas e o envio automático de notificações por e-mail, é possível simplificar e otimizar essa tarefa logística.
O setor de e-commerce e vendas online cresce a cada ano, exigindo das empresas agilidade, precisão e integração de processos para atender clientes em diferentes canais de venda. Automatizar tarefas nesse contexto é fundamental para garantir eficiência operacional, evitar erros manuais e proporcionar uma melhor experiência ao cliente.
Nesta seção, você aprenderá como aplicar Python para automatizar rotinas comuns em lojas virtuais e operações de vendas online, desde o processamento de pedidos até a atualização de estoque e o envio de documentos fiscais. Os exemplos apresentados foram pensados para resolver desafios reais enfrentados por quem atua no comércio eletrônico, mostrando como a tecnologia pode ser uma grande aliada no crescimento do negócio.
A seguir, você verá como automatizar:
A leitura e processamento de pedidos de marketplaces é uma tarefa importante para empresas que vendem produtos em plataformas como Mercado Livre, Amazon e outros. Neste exemplo, vamos mostrar como automatizar a leitura de pedidos recebidos em um marketplace, utilizando Python para processar as informações e gerar relatórios.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_pedidos()
: Para ler o arquivo com os pedidos
recebidos.gerar_relatorio_pedidos()
: Para gerar o relatório com o
resumo dos pedidos.import pandas as pd
# Função para ler os pedidos recebidos
def ler_pedidos(caminho_arquivo):
return pd.read_csv(caminho_arquivo, sep=';', encoding='latin1')
# Função para gerar o relatório com o resumo dos pedidos
def gerar_relatorio_pedidos(df_pedidos):
= df_pedidos.groupby('Produto').agg({'Quantidade': 'sum', 'Preço': 'mean'}).reset_index()
relatorio 'Total Vendas'] = relatorio['Quantidade'] * relatorio['Preço']
relatorio['relatorio_pedidos.csv', index=False, sep=';')
relatorio.to_csv(print("Relatório de pedidos gerado: relatorio_pedidos.csv")
# Exemplo de uso
= 'pedidos_marketplace.csv'
caminho_arquivo = ler_pedidos(caminho_arquivo)
df_pedidos gerar_relatorio_pedidos(df_pedidos)
A automação da leitura e processamento de pedidos de marketplaces pode trazer maior eficiência e agilidade para as operações de vendas online, facilitando o acompanhamento dos pedidos e a geração de relatórios. Com o uso de arquivos CSV e a automação do processamento de dados, é possível simplificar e otimizar essa tarefa comercial.
A atualização de estoque é uma atividade crítica para empresas de e-commerce e vendas online, sendo essencial para garantir a disponibilidade dos produtos e evitar perdas financeiras. Neste exemplo, vamos mostrar como automatizar a atualização de estoque em planilhas Excel ou em um ERP simples, utilizando Python para ler os dados de vendas e atualizar as quantidades em estoque.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_vendas()
: Para ler o arquivo com os dados de
vendas.atualizar_estoque()
: Para atualizar as quantidades em
estoque.import pandas as pd
# Função para ler os dados de vendas
def ler_vendas(caminho_arquivo):
return pd.read_csv(caminho_arquivo, sep=';', encoding='latin1')
# Função para atualizar o estoque
def atualizar_estoque(df_vendas, caminho_estoque):
= pd.read_excel(caminho_estoque)
df_estoque for _, row in df_vendas.iterrows():
= row['Produto']
produto = row['Quantidade']
quantidade_vendida 'Produto'] == produto, 'Estoque'] -= quantidade_vendida
df_estoque.loc[df_estoque[=False)
df_estoque.to_excel(caminho_estoque, indexprint("Estoque atualizado com sucesso.")
# Exemplo de uso
= 'vendas.csv'
caminho_vendas = 'estoque.xlsx'
caminho_estoque = ler_vendas(caminho_vendas)
df_vendas atualizar_estoque(df_vendas, caminho_estoque)
A automação da atualização de estoque pode trazer maior eficiência e precisão para a gestão de estoques em empresas de e-commerce e vendas online, facilitando o acompanhamento das vendas e a atualização das quantidades em estoque. Com o uso de arquivos CSV e Excel, e a automação do processamento de dados, é possível simplificar e otimizar essa tarefa comercial.
O envio de notas fiscais e respostas automáticas a clientes é uma prática importante para garantir a conformidade fiscal e melhorar o atendimento ao cliente. Neste exemplo, vamos mostrar como automatizar o envio de notas fiscais eletrônicas e respostas automáticas a clientes, utilizando Python para gerar os documentos e enviá-los por e-mail.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
gerar_nota_fiscal()
: Para gerar a nota fiscal
eletrônica.enviar_nota_fiscal_email()
: Para enviar a nota fiscal e
a resposta automática por e-mail.import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# Função para gerar a nota fiscal eletrônica
def gerar_nota_fiscal(dados_venda, caminho_saida):
= pd.DataFrame([dados_venda])
df_nota =False, sep=';')
df_nota.to_csv(caminho_saida, indexprint(f"Nota fiscal gerada: {caminho_saida}")
# Função para enviar a nota fiscal por e-mail
def enviar_nota_fiscal_email(destinatario, assunto, corpo, caminho_nota, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port # Criar o objeto de mensagem
= MIMEMultipart()
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[# Adicionar o corpo do e-mail
'plain'))
msg.attach(MIMEText(corpo, # Adicionar o anexo
with open(caminho_nota, 'rb') as anexo:
= MIMEBase('application', 'octet-stream')
parte
parte.set_payload(anexo.read())
encoders.encode_base64(parte)'Content-Disposition', f'attachment; filename={caminho_nota.split("/")[-1]}')
parte.add_header(
msg.attach(parte)# Enviar o e-mail
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= {
dados_venda 'Cliente': 'João da Silva',
'Produto': 'Notebook',
'Quantidade': 1,
'Valor Unitário': 5000.00,
'CNPJ': '12.345.678/0001-95'
}= 'nota_fiscal_joao_silva.csv'
caminho_nota
gerar_nota_fiscal(dados_venda, caminho_nota)
# Enviar a nota fiscal por e-mail (descomente a linha abaixo para enviar o e-mail)
# enviar_nota_fiscal_email('joao@email.com', 'Sua Nota Fiscal', 'Segue em anexo a nota fiscal.', caminho_nota, 'seu_email@gmail.com', 'sua_senha')
A automação do envio de notas fiscais e respostas automáticas a clientes pode trazer maior eficiência e agilidade para o processo de faturamento e atendimento ao cliente, garantindo a conformidade fiscal e melhorando a experiência do cliente. Com o uso de geração automática de notas fiscais e envio programático por e-mail, é possível simplificar e otimizar essa tarefa financeira e comercial.
Escritórios que atuam junto a repartições públicas e órgãos governamentais enfrentam desafios específicos, como a necessidade de lidar com grande volume de documentos, atender a exigências legais e normativas, cumprir prazos rigorosos e garantir a rastreabilidade das informações. A automação pode ser uma grande aliada nesse contexto, trazendo mais agilidade, precisão e conformidade para os processos administrativos e operacionais.
Nesta seção, você aprenderá como aplicar Python para automatizar tarefas comuns nesse segmento, desde o controle de protocolos e conversão de documentos até a roteirização de rotas e o acompanhamento de entregas. Os exemplos apresentados foram pensados para resolver situações reais enfrentadas por profissionais que prestam serviços para o setor público, mostrando como a tecnologia pode facilitar o dia a dia e aumentar a eficiência.
A seguir, você verá como automatizar:
O controle de protocolos em repartições públicas é uma atividade importante para garantir a tramitação adequada de processos e documentos. Neste exemplo, vamos mostrar como automatizar o controle de protocolos em uma repartição pública, utilizando Python para ler planilhas com os dados dos protocolos e enviar notificações automáticas.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_planilha_protocolos()
: Para ler a planilha com os
dados dos protocolos.verificar_protocolos_pendentes()
: Para verificar quais
protocolos estão pendentes.enviar_notificacoes_protocolos()
: Para enviar as
notificações por e-mail.import pandas as pd
import smtplib
from email.mime.text import MIMEText
# Função para ler a planilha de protocolos
def ler_planilha_protocolos(caminho_arquivo):
return pd.read_excel(caminho_arquivo)
# Função para verificar protocolos pendentes
def verificar_protocolos_pendentes(df_protocolos):
return df_protocolos[df_protocolos['Situação'] == 'Pendente']
# Função para enviar notificações por e-mail
def enviar_notificacoes_protocolos(df_protocolos, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port for _, row in df_protocolos.iterrows():
= row['Email']
destinatario = f"Pendência no Protocolo - {row['Número do Protocolo']}"
assunto = f"Prezado(a),\n\nIdentificamos uma pendência no protocolo {row['Número do Protocolo']}. Por favor, regularize a situação o quanto antes.\n\nAtenciosamente,"
corpo
= MIMEText(corpo)
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= 'protocolos_reparticao_publica.xlsx'
caminho_planilha = ler_planilha_protocolos(caminho_planilha)
df_protocolos = verificar_protocolos_pendentes(df_protocolos)
df_protocolos_pendentes
# Enviar notificações (descomente a linha abaixo para enviar os e-mails)
# enviar_notificacoes_protocolos(df_protocolos_pendentes, 'seu_email@gmail.com', 'sua_senha')
print("Processamento concluído.")
A automação do controle de protocolos em repartições públicas pode trazer maior eficiência e segurança para a tramitação de processos e documentos, garantindo o cumprimento de prazos e a comunicação adequada entre as partes envolvidas. Com o uso de planilhas e o envio automático de notificações por e-mail, é possível simplificar e otimizar essa tarefa administrativa.
A conversão de tabelas em PDF para Excel é uma tarefa comum em escritórios que lidam com dados financeiros, orçamentos, relatórios e outros documentos que contêm tabelas. Neste exemplo, vamos mostrar como automatizar a conversão de tabelas em PDF para Excel, utilizando Python para extrair os dados das tabelas e salvá-los em um arquivo Excel.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_tabela_pdf()
: Para ler a tabela do arquivo
PDF.salvar_tabela_excel()
: Para salvar a tabela em um
arquivo Excel.import pdfplumber
import pandas as pd
# Função para ler a tabela do PDF
def ler_tabela_pdf(caminho_arquivo):
with pdfplumber.open(caminho_arquivo) as pdf:
= pdf.pages[0]
primeira_pagina = primeira_pagina.extract_table()
tabela return tabela
# Função para salvar a tabela em um arquivo Excel
def salvar_tabela_excel(tabela, caminho_saida):
= pd.DataFrame(tabela[1:], columns=tabela[0])
df_tabela =False)
df_tabela.to_excel(caminho_saida, indexprint(f"Tabela salva em Excel: {caminho_saida}")
# Exemplo de uso
= 'tabela.pdf'
caminho_pdf = 'tabela.xlsx'
caminho_excel = ler_tabela_pdf(caminho_pdf)
tabela_extraida salvar_tabela_excel(tabela_extraida, caminho_excel)
A automação da conversão de tabelas em PDF para Excel pode trazer maior eficiência e precisão para o trabalho com dados em escritórios, facilitando a análise e o compartilhamento das informações. Com o uso de arquivos PDF e Excel, e a automação do processamento e conversão de dados, é possível simplificar e otimizar essa tarefa de manipulação de dados.
A roteirização é uma atividade fundamental para a otimização do transporte de mercadorias, permitindo a definição das melhores rotas a serem seguidas pelos veículos. Neste exemplo, vamos mostrar como automatizar a roteirização com base em distância, utilizando APIs como Google Maps ou OpenRoute.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
calcular_rota_google_maps()
: Para calcular a rota
utilizando a API do Google Maps.calcular_rota_openroute()
: Para calcular a rota
utilizando a API do OpenRoute.import requests
# Função para calcular a rota utilizando a API do Google Maps
def calcular_rota_google_maps(origem, destino, chave_api):
= f"https://maps.googleapis.com/maps/api/directions/json?origin={origem}&destination={destino}&key={chave_api}"
url = requests.get(url)
response = response.json()
dados if dados['status'] == 'OK':
= dados['routes'][0]
rota = rota['legs'][0]['distance']['text']
distancia = rota['legs'][0]['duration']['text']
tempo return f"Distância: {distancia}, Tempo: {tempo}"
else:
return "Erro ao calcular a rota."
# Função para calcular a rota utilizando a API do OpenRoute
def calcular_rota_openroute(origem, destino):
= f"https://api.openrouteservice.org/v2/directions/driving-car?api_key=sua_chave_api&start={origem}&end={destino}"
url = requests.get(url)
response = response.json()
dados if dados['routes']:
= dados['routes'][0]
rota = rota['summary']['length']
distancia = rota['summary']['duration']
tempo return f"Distância: {distancia} metros, Tempo: {tempo} segundos"
else:
return "Erro ao calcular a rota."
# Exemplo de uso
= "-23.550520, -46.633308" # São Paulo
origem = "-22.906847, -43.172896" # Rio de Janeiro
destino # Calcular rota pelo Google Maps
= calcular_rota_google_maps(origem, destino, 'sua_chave_api_google_maps')
resultado_google_maps print("Google Maps:", resultado_google_maps)
# Calcular rota pelo OpenRoute
= calcular_rota_openroute(origem, destino)
resultado_openroute print("OpenRoute:", resultado_openroute)
A automação da roteirização com base em distância pode trazer ganhos significativos de eficiência e economia para as operações de transporte, permitindo a definição de rotas otimizadas e a redução de custos com combustível e tempo de viagem. Com o uso de APIs de mapeamento e a automação do processamento das informações, é possível simplificar e otimizar essa tarefa logística.
O acompanhamento de entregas é uma atividade importante para garantir a satisfação dos clientes e a eficiência das operações de logística. Neste exemplo, vamos mostrar como automatizar o acompanhamento de entregas, utilizando Python para ler planilhas com os dados das entregas e enviar notificações automáticas.
O objetivo deste exemplo é criar um script que:
O código será estruturado em funções, para facilitar a leitura e a manutenção. As principais funções serão:
ler_planilha_entregas()
: Para ler a planilha com os
dados das entregas.enviar_notificacoes()
: Para enviar as notificações
automáticas.import pandas as pd
import smtplib
from email.mime.text import MIMEText
# Função para ler a planilha de entregas
def ler_planilha_entregas(caminho_arquivo):
return pd.read_excel(caminho_arquivo)
# Função para enviar notificações automáticas
def enviar_notificacoes(df_entregas, smtp_user, smtp_password):
= 'smtp.gmail.com'
smtp_server = 587
smtp_port for _, row in df_entregas.iterrows():
= row['Email']
destinatario = f"Atualização sobre sua entrega - {row['Código da Entrega']}"
assunto = f"Prezado(a),\n\nInformamos que o status da sua entrega {row['Código da Entrega']} foi atualizado para: {row['Status']}.\n\nAtenciosamente,"
corpo
= MIMEText(corpo)
msg 'Subject'] = assunto
msg['From'] = smtp_user
msg['To'] = destinatario
msg[
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_user, smtp_password)
server.send_message(msg)
# Exemplo de uso
= 'entregas.xlsx'
caminho_planilha = ler_planilha_entregas(caminho_planilha)
df_entregas # Enviar notificações (descomente a linha abaixo para enviar os e-mails)
# enviar_notificacoes(df_entregas, 'seu_email@gmail.com', 'sua_senha')
print("Processamento concluído.")
A automação do acompanhamento de entregas pode trazer maior eficiência e agilidade para as operações de logística, melhorando a comunicação com os clientes e a gestão das entregas. Com o uso de planilhas e o envio automático de notificações por e-mail, é possível simplificar e otimizar essa tarefa logística.
A automação de processos em escritórios que prestam serviços para repartições públicas e órgãos governamentais pode trazer ganhos significativos de eficiência, precisão e conformidade. Com o uso de ferramentas como Python, planilhas e APIs, é possível simplificar tarefas administrativas, melhorar a comunicação com os clientes e otimizar a gestão de documentos e processos. A implementação de soluções automatizadas pode reduzir o tempo gasto em atividades repetitivas, minimizar erros humanos e garantir que os prazos sejam cumpridos de forma mais eficaz. Além disso, a automação pode facilitar o acesso e a análise de dados, permitindo uma tomada de decisão mais informada e ágil. Com o avanço da tecnologia e a crescente demanda por eficiência nos serviços públicos, a automação se torna uma ferramenta indispensável para os profissionais que atuam nesse setor.
Agradecemos a todos os leitores e profissionais que contribuíram para a elaboração deste material. Esperamos que os exemplos apresentados tenham sido úteis e inspiradores, e que possam ser aplicados na prática para melhorar a eficiência e a produtividade em seus escritórios.
FAKER. Faker Documentation. Disponível em: https://faker.readthedocs.io/. Acesso em: 17 jun. 2025.
FPDF. FPDF Documentation. Disponível em: http://www.fpdf.org/. Acesso em: 17 jun. 2025.
GOOGLE DEVELOPERS. Google Maps Platform Documentation. Disponível em: https://developers.google.com/maps/documentation. Acesso em: 17 jun. 2025.
LUTZ, Mark. Learning Python. 5. ed. Sebastopol: O’Reilly Media, 2013.
MCKINNEY, Wes. Python for Data Analysis. 3. ed. Sebastopol: O’Reilly Media, 2022.
OPENPYXL. OpenPyXL Documentation. Disponível em: https://openpyxl.readthedocs.io/. Acesso em: 17 jun. 2025.
OPENROUTESERVICE. API Documentation. Disponível em: https://openrouteservice.org/sign-up/. Acesso em: 17 jun. 2025.
PANDAS DEVELOPMENT TEAM. Pandas Documentation. Disponível em: https://pandas.pydata.org/docs/. Acesso em: 17 jun. 2025.
PDFPLUMBER. pdfplumber Documentation. Disponível em: https://github.com/jsvine/pdfplumber. Acesso em: 17 jun. 2025.
PYTHON SOFTWARE FOUNDATION. Python Documentation. Disponível em: https://docs.python.org/3/. Acesso em: 17 jun. 2025.
PYTHON-DOCX. python-docx Documentation. Disponível em: https://python-docx.readthedocs.io/. Acesso em: 17 jun. 2025.
PYPDF2. PyPDF2 Documentation. Disponível em: https://pypdf2.readthedocs.io/. Acesso em: 17 jun. 2025.
PYWEBIO. PyWebIO Documentation. Disponível em: https://pywebio.readthedocs.io/. Acesso em: 17 jun. 2025.
REITZ, Kenneth; SCHLUSSER, Tanya. The Hitchhiker’s Guide to Python. Sebastopol: O’Reilly Media, 2021.
REQUESTS. Requests: HTTP for Humans. Disponível em: https://docs.python-requests.org/en/latest/. Acesso em: 17 jun. 2025.
RICHARDSON, Leonard. BeautifulSoup Documentation. Disponível em: https://www.crummy.com/software/BeautifulSoup/bs4/doc/. Acesso em: 17 jun. 2025.
SELENIUMHQ. Selenium with Python Documentation. Disponível em: https://selenium-python.readthedocs.io/. Acesso em: 17 jun. 2025.
SWEIGART, Al. Automate the Boring Stuff with Python. 2. ed. San Francisco: No Starch Press, 2019.
TKDOCS. Tkinter Documentation. Disponível em: https://tkdocs.com/. Acesso em: 17 jun. 2025.
VANDERPLAS, Jake. Python Data Science Handbook. Sebastopol: O’Reilly Media, 2016.
01_analise_vendas_csv.py
02_relatorio_financeiro_excel.py
03_inadimplencia_alugueis_email.py
04_envio_email_automatizado.py
05_extracao_texto_pdf.py
06_modificacao_word.py
07_automacao_excel_pandas.py
08_relatorios_diarios_email.py
09_webscraping_beautifulsoup.py
10_extracao_tabelas_html_excel.py
11_automacao_sites_selenium.py
12_interface_tkinter.py
13_interface_pywebio.py
14_gerador_procuracoes_peticiones.py
15_controle_prazos_alertas.py
16_consulta_tribunais.py
17_extratos_bancarios.py
18_geracao_guias_impostos.py
19_envio_boletos_email.py
20_manifestos_xml_pdf.py
21_roteirizacao_api.py
22_acompanhamento_entregas_planilha.py
23_leitura_pedidos_marketplace.py
24_atualizacao_estoque.py
25_envio_notas_respostas.py
26_controle_protocolos.py
27_pdf_para_excel.py
28_organizador_arquivos_clientes.py
29_dashboard_pagamentos.py
30_calculadora_impostos_interface.py