Buscar

Gabarito Aula_1 Phyton

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

{
 "cells": [
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "# Automação de Sistemas e Processos com Python\n",
 "\n",
 "### Desafio:\n",
 "\n",
 "Todos os dias, o nosso sistema atualiza as vendas do dia anterior.\n",
 "O seu trabalho diário, como analista, é enviar um e-mail para a diretoria, assim que começar a trabalhar, com o faturamento e a quantidade de produtos vendidos no dia anterior\n",
 "\n",
 "E-mail da diretoria: seugmail+diretoria@gmail.com<br>\n",
 "Local onde o sistema disponibiliza as vendas do dia anterior: https://drive.google.com/drive/folders/1mhXZ3JPAnekXP_4vX7Z_sJj35VWqayaR?usp=sharing\n",
 "\n",
 "Para resolver isso, vamos usar o pyautogui, uma biblioteca de automação de comandos do mouse e do teclado\n",
 "\n",
 "### Passo 1: Lógica de Programação\n",
 "\n",
 "### Passo 2: Transformar o passo a passo em Python"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 8,
 "metadata": {},
 "outputs": [],
 "source": [
 "# instalar pyautogui\n",
 "\n",
 "import pyautogui\n",
 "import time\n",
 "import pyperclip\n",
 "\n",
 "pyautogui.PAUSE = 1\n",
 "pyautogui.alert(\"Vai começar, aperte OK e não mexa em nada\")\n",
 "\n",
 "# opção 1 - abrir navegador novo e entrar no chrome\n",
 "# pyautogui.press(\"winleft\")\n",
 "# pyautogui.write(\"chrome\")\n",
 "# pyautogui.press(\"enter\")\n",
 "\n",
 "# opção 2 - abrir uma nova aba\n",
 "pyautogui.hotkey('ctrl', 't')\n",
 "\n",
 "# abrir drive\n",
 "# ensinar aqui o write\n",
 "link = \"https://drive.google.com/drive/folders/149xknr9JvrlEnhNWO49zPcw0PW5icxga?usp=sharing\"\n",
 "pyperclip.copy(link)\n",
 "pyautogui.hotkey(\"ctrl\", \"v\")\n",
 "pyautogui.press(\"enter\")\n",
 "time.sleep(7)\n",
 "\n",
 "# baixar base de dados atualizada\n",
 "pyautogui.click(414, 271, clicks=2)\n",
 "time.sleep(2)\n",
 "pyautogui.click(407, 353)\n",
 "pyautogui.click(1163, 153)\n",
 "pyautogui.click(1052, 599)\n",
 "time.sleep(10)"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "### Vamos agora ler o arquivo baixado para pegar os indicadores\n",
 "\n",
 "- Faturamento\n",
 "- Quantidade de Produtos"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 9,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/html": [
 "<div>\n",
 "<style scoped>\n",
 " .dataframe tbody tr th:only-of-type {\n",
 " vertical-align: middle;\n",
 " }\n",
 "\n",
 " .dataframe tbody tr th {\n",
 " vertical-align: top;\n",
 " }\n",
 "\n",
 " .dataframe thead th {\n",
 " text-align: right;\n",
 " }\n",
 "</style>\n",
 "<table border=\"1\" class=\"dataframe\">\n",
 " <thead>\n",
 " <tr style=\"text-align: right;\">\n",
 " <th></th>\n",
 " <th>Código Venda</th>\n",
 " <th>Data</th>\n",
 " <th>ID Loja</th>\n",
 " <th>Produto</th>\n",
 " <th>Quantidade</th>\n",
 " <th>Valor Unitário</th>\n",
 " <th>Valor Final</th>\n",
 " </tr>\n",
 " </thead>\n",
 " <tbody>\n",
 " <tr>\n",
 " <th>0</th>\n",
 " <td>65014</td>\n",
 " <td>2019-12-01</td>\n",
 " <td>Shopping Morumbi</td>\n",
 " <td>Sunga Listrado</td>\n",
 " <td>5</td>\n",
 " <td>114</td>\n",
 " <td>570</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>1</th>\n",
 " <td>65014</td>\n",
 " <td>2019-12-01</td>\n",
 " <td>Shopping Morumbi</td>\n",
 " <td>Casaco Listrado</td>\n",
 " <td>1</td>\n",
 " <td>269</td>\n",
 " <td>269</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>2</th>\n",
 " <td>65016</td>\n",
 " <td>2019-12-01</td>\n",
 " <td>Iguatemi Campinas</td>\n",
 " <td>Sapato Listrado</td>\n",
 " <td>2</td>\n",
 " <td>363</td>\n",
 " <td>726</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>3</th>\n",
 " <td>65016</td>\n",
 " <td>2019-12-01</td>\n",
 " <td>Iguatemi Campinas</td>\n",
 " <td>Casaco</td>\n",
 " <td>1</td>\n",
 " <td>250</td>\n",
 " <td>250</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>4</th>\n",
 " <td>65017</td>\n",
 " <td>2019-12-01</td>\n",
 " <td>Shopping SP Market</td>\n",
 " <td>Gorro Liso</td>\n",
 " <td>3</td>\n",
 " <td>92</td>\n",
 " <td>276</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>...</th>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " <td>...</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>7084</th>\n",
 " <td>69996</td>\n",
 " <td>2019-12-26</td>\n",
 " <td>Center Shopping Uberlândia</td>\n",
 " <td>Short Listrado</td>\n",
 " <td>2</td>\n",
 " <td>102</td>\n",
 " <td>204</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>7085</th>\n",
 " <td>69996</td>\n",
 " <td>2019-12-26</td>\n",
 " <td>Center Shopping Uberlândia</td>\n",
 " <td>Mochila</td>\n",
 " <td>4</td>\n",
 " <td>270</td>\n",
 " <td>1080</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>7086</th>\n",
 " <td>69996</td>\n",
 " <td>2019-12-26</td>\n",
 " <td>Center Shopping Uberlândia</td>\n",
 " <td>Pulseira Estampa</td>\n",
 " <td>1</td>\n",
 " <td>87</td>\n",
 " <td>87</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>7087</th>\n",
 " <td>69997</td>\n",
 " <td>2019-12-26</td>\n",
 " <td>Ribeirão Shopping</td>\n",
 " <td>Camisa Listrado</td>\n",
 " <td>1</td>\n",
 " <td>108</td>\n",
 " <td>108</td>\n",
 " </tr>\n",
 " <tr>\n",
 " <th>7088</th>\n",
 " <td>69997</td>\n",
 " <td>2019-12-26</td>\n",
 " <td>Ribeirão Shopping</td>\n",
 " <td>Short Linho</td>\n",
 " <td>2</td>\n",
 " <td>133</td>\n",
 " <td>266</td>\n",
 " </tr>\n",
 " </tbody>\n",
 "</table>\n",
 "<p>7089 rows × 7 columns</p>\n",
 "</div>"
 ],
 "text/plain": [
 " Código Venda Data ID Loja Produto \\\n",
 "0 65014 2019-12-01 Shopping Morumbi Sunga Listrado \n",
 "1 65014 2019-12-01 Shopping Morumbi Casaco Listrado \n",
 "2 65016 2019-12-01 Iguatemi Campinas Sapato Listrado \n",
 "3 65016 2019-12-01 Iguatemi Campinas Casaco \n",
 "4 65017 2019-12-01 Shopping SP Market Gorro Liso \n",
 "... ... ... ... ... \n",
 "7084 69996 2019-12-26 Center Shopping Uberlândia Short Listrado \n",
 "7085 69996 2019-12-26 Center Shopping Uberlândia Mochila \n",
 "7086 69996 2019-12-26 Center Shopping Uberlândia Pulseira Estampa \n",
 "7087 69997 2019-12-26 Ribeirão Shopping Camisa Listrado \n",
 "7088 69997 2019-12-26 Ribeirão Shopping
Short Linho \n",
 "\n",
 " Quantidade Valor Unitário Valor Final \n",
 "0 5 114 570 \n",
 "1 1 269 269 \n",
 "2 2 363 726 \n",
 "3 1 250 250 \n",
 "4 3 92 276 \n",
 "... ... ... ... \n",
 "7084 2 102 204 \n",
 "7085 4 270 1080 \n",
 "7086 1 87 87 \n",
 "7087 1 108 108 \n",
 "7088 2 133 266 \n",
 "\n",
 "[7089 rows x 7 columns]"
 ]
 },
 "metadata": {},
 "output_type": "display_data"
 }
 ],
 "source": [
 "import pandas as pd\n",
 "\n",
 "df = pd.read_excel(\"C://Users/alonp/Downloads/Vendas - Dez.xlsx\")\n",
 "display(df)\n",
 "faturamento = df['Valor Final'].sum()\n",
 "qtde_produtos = df['Quantidade'].sum()"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "### Vamos agora enviar um e-mail pelo gmail"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 10,
 "metadata": {},
 "outputs": [
 {
 "data": {
 "text/plain": [
 "'OK'"
 ]
 },
 "execution_count": 10,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "import pyperclip\n",
 "\n",
 "# abrir aba gmail\n",
 "pyautogui.hotkey('ctrl', 't')\n",
 "pyautogui.write(\"mail.google.com\")\n",
 "pyautogui.press('enter')\n",
 "time.sleep(5)\n",
 "\n",
 "# clicar em escrever email\n",
 "pyautogui.click(133, 183)\n",
 "\n",
 "# preencher informações do e-mail\n",
 "pyautogui.write('pythonimpressionador+diretoria@gmail.com')\n",
 "pyautogui.press('tab')\n",
 "pyautogui.press('tab')\n",
 "assunto = \"Relatório de Vendas de Ontem\"\n",
 "pyperclip.copy(assunto)\n",
 "pyautogui.hotkey(\"ctrl\", 'v')\n",
 "pyautogui.press(\"tab\")\n",
 "texto = f\"\"\"\n",
 "Prezados, bom dia\n",
 "\n",
 "O faturamento de ontem foi de: R${faturamento:,.2f}\n",
 "A quantidade de produtos foi de: {qtde_produtos:,}\n",
 "\n",
 "Abs\n",
 "LiraPython\"\"\"\n",
 "pyperclip.copy(texto)\n",
 "pyautogui.hotkey(\"ctrl\", 'v')\n",
 "\n",
 "# enviar e-mail\n",
 "pyautogui.hotkey('ctrl', 'enter')\n",
 "\n",
 "# avisar que acabou\n",
 "pyautogui.alert(\"Fim da Automação. Seu computador já voltou a ser seu\")"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "#### Use esse código para descobrir qual a posição de um item que queira clicar\n",
 "\n",
 "- Lembre-se: a posição na sua tela é diferente da posição na minha tela"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 16,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "Point(x=407, y=353)\n"
 ]
 },
 {
 "data": {
 "text/plain": [
 "'OK'"
 ]
 },
 "execution_count": 16,
 "metadata": {},
 "output_type": "execute_result"
 }
 ],
 "source": [
 "import pyautogui\n",
 "import time\n",
 "time.sleep(4)\n",
 "print(pyautogui.position())\n",
 "pyautogui.alert(\"Posição Registrada\")"
 ]
 },
 {
 "cell_type": "markdown",
 "metadata": {},
 "source": [
 "#### Caso queira pegar por uma imagem"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 23,
 "metadata": {},
 "outputs": [],
 "source": [
 "time.sleep(5)\n",
 "x, y = pyautogui.locateCenterOnScreen(\"gmail.png\")\n",
 "pyautogui.click(x, y)"
 ]
 },
 {
 "cell_type": "code",
 "execution_count": 26,
 "metadata": {},
 "outputs": [
 {
 "name": "stdout",
 "output_type": "stream",
 "text": [
 "Achei\n"
 ]
 }
 ],
 "source": [
 "while not pyautogui.locateCenterOnScreen(\"gmail.png\"):\n",
 " time.sleep(1)\n",
 "print(\"Achei\")"
 ]
 }
 ],
 "metadata": {
 "kernelspec": {
 "display_name": "Python 3",
 "language": "python",
 "name": "python3"
 },
 "language_info": {
 "codemirror_mode": {
 "name": "ipython",
 "version": 3
 },
 "file_extension": ".py",
 "mimetype": "text/x-python",
 "name": "python",
 "nbconvert_exporter": "python",
 "pygments_lexer": "ipython3",
 "version": "3.8.8"
 }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais