Descrição:

Esta função automatiza o envio de mensagens personalizadas e anexos para vários contatos no WhatsApp Web. Ela lê uma planilha Excel contendo os números de telefone, as mensagens a serem enviadas e os caminhos dos arquivos de anexo. O script usa pyautogui para controlar o mouse e teclado, pyperclip para manipular o conteúdo da área de transferência e pandas para ler os dados da planilha.

O fluxo é: abrir o WhatsApp Web, buscar o contato pelo número, colar a mensagem, anexar um arquivo caso exista e enviar. Para localizar elementos da interface do WhatsApp Web, utiliza imagens (ex: lupa, ícone de anexo, documento).


Código da função/rotina:

python
CopyEdit
import pyautogui
import time
import pandas as pd
import pyperclip  # Manipulação da área de transferência

# Carrega a planilha Excel com os dados dos contatos e mensagens
df = pd.read_excel(r"C:\\Users\\Usuario\\01. Desenvolvendo Programação\\Autamação Whats\\Contatos.xlsx")

# Itera sobre cada linha da planilha
for index, row in df.iterrows():
    numero_completo = str(row["Telefone"])  # Número completo com código do país (ex: 5541998765432)
    mensagem = row["Mensagem"]
    caminho_arquivo = row["Caminho_Arquivo"]  # Caminho do arquivo para enviar como anexo

    # Ajusta o número para pesquisa no WhatsApp (últimos 9 dígitos)
    numero_tratado = numero_completo[-9:]

    # Aguarda o carregamento do WhatsApp Web
    time.sleep(3)

    # Localiza e clica no botão de pesquisa (ícone lupa)
    lupa = pyautogui.locateCenterOnScreen("lupa.png")
    if lupa:
        pyautogui.click(lupa)
        time.sleep(1)
    else:
        print("Lupa não encontrada na tela!")
        continue

    # Digita o número do contato e confirma para abrir conversa
    pyautogui.write(numero_tratado)
    time.sleep(2)
    pyautogui.press("enter")
    time.sleep(2)

    # Copia a mensagem para a área de transferência e cola no campo de texto
    pyperclip.copy(mensagem)
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(1)

    # Se existir caminho de arquivo para anexo, tenta enviar
    if pd.notna(caminho_arquivo):
        anexo = pyautogui.locateCenterOnScreen("anexo.png")
        if anexo:
            pyautogui.click(anexo)
            time.sleep(1)

            documento = pyautogui.locateCenterOnScreen("documento.png")
            if documento:
                pyautogui.click(documento)
                time.sleep(1)

                pyautogui.write(caminho_arquivo)
                time.sleep(1)
                pyautogui.press("enter")
                time.sleep(2)
            else:
                print("Ícone de documento não encontrado!")
                continue

    # Envia a mensagem (e anexo, se houver)
    pyautogui.press("enter")
    time.sleep(3)

print("Mensagens enviadas com sucesso! ✅")