Se quer um fluxo automático sem Power Automate, pode usar um script PowerShell para:
- Tirar um snapshot do relatório.
- Enviar um e-mail automaticamente com a imagem.
Esse método requer acesso à API do Power BI e permissões adequadas.
🔹 Pré-requisitos
- Ter o Power BI aberto no local desejado.
- Configurar o envio de e-mails via SMTP (Gmail, Outlook ou Exchange).
- Executar o PowerShell com permissões de administrador.
- Instalar o módulo
Powershell Imaging
para capturar a tela.
📝 Script PowerShell
# Definir caminho para salvar a captura de tela$ImagemPath = "$env:TEMP\PowerBI_Snapshot.png"# Função para capturar a telaAdd-Type -TypeDefinition @"using System;using System.Drawing;using System.Drawing.Imaging;using System.Runtime.InteropServices;public class ScreenCapture {[DllImport("user32.dll")]public static extern IntPtr GetDesktopWindow();[DllImport("user32.dll")]public static extern IntPtr GetWindowDC(IntPtr hWnd);[DllImport("gdi32.dll")]public static extern int BitBlt(IntPtr hdcDest, int xDest, int yDest, int wDest, int hDest, IntPtr hdcSrc, int xSrc, int ySrc, int RasterOp);[DllImport("gdi32.dll")]public static extern bool DeleteDC(IntPtr hdc);[DllImport("gdi32.dll")]public static extern IntPtr CreateCompatibleDC(IntPtr hdc);[DllImport("gdi32.dll")]public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);[DllImport("gdi32.dll")]public static extern IntPtr SelectObject(IntPtr hdc, IntPtr h);[DllImport("gdi32.dll")]public static extern bool DeleteObject(IntPtr ho);public static void CaptureScreen(string filePath) {IntPtr hDesk = GetDesktopWindow();IntPtr hSrce = GetWindowDC(hDesk);IntPtr hDest = CreateCompatibleDC(hSrce);int width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;int height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;IntPtr hBmp = CreateCompatibleBitmap(hSrce, width, height);IntPtr hOldBmp = SelectObject(hDest, hBmp);BitBlt(hDest, 0, 0, width, height, hSrce, 0, 0, 0x00CC0020);Bitmap bmp = Image.FromHbitmap(hBmp);bmp.Save(filePath, ImageFormat.Png);SelectObject(hDest, hOldBmp);DeleteObject(hBmp);DeleteDC(hDest);DeleteDC(hSrce);}}"@ -Language CSharp# Capturar a tela do relatório Power BI[ScreenCapture]::CaptureScreen($ImagemPath)# Configurações do e-mail$SMTPServer = "smtp.office365.com" # Para Outlook | Use "smtp.gmail.com" para Gmail$SMTPPort = 587$EmailFrom = "seuemail@seudominio.com"$EmailTo = "destinatario@seudominio.com"$EmailSubject = "Snapshot do Relatório Power BI"$EmailBody = "Segue em anexo a captura de tela do relatório Power BI."$SMTPUser = "seuemail@seudominio.com"$SMTPPassword = "suasenha"# Criar e enviar o e-mailSend-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject -Body $EmailBody `-Attachments $ImagemPath -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl `-Credential (New-Object System.Management.Automation.PSCredential ($SMTPUser, (ConvertTo-SecureString $SMTPPassword -AsPlainText -Force)))Write-Host "E-mail enviado com sucesso!"
🛠 Configurações Necessárias
- Troque
seuemail@seudominio.com
esuasenha
pelas suas credenciais. - Se usar Gmail, ative "Permitir aplicativos menos seguros" ou gere uma senha de aplicativo.
- Mude o SMTP dependendo do provedor de e-mail:
- Outlook:
smtp.office365.com
(porta587
). - Gmail:
smtp.gmail.com
(porta587
). - Exchange:
smtp.office365.com
(para Microsoft 365).
🎯 Como Rodar o Script?
- Salve o código como
EnviarRelatorio.ps1
. - Abra o PowerShell como Administrador.
.\EnviarRelatorio.ps1
3. O script capturará a tela e enviará um e-mail com a imagem anexada.
🔥 Vantagens Desta Abordagem
✅ Automatiza a captura de tela do relatório Power BI.
✅ Envia automaticamente um e-mail com o snapshot.
✅ Funciona sem precisar do Power Automate (economizando licenças).
✅ Adaptável para rodar periodicamente via Agendador de Tarefas do Windows.
👉 Não se esqueça de seguir André Bernardes no Linkedin. Clique aqui e me contate via What's App.
Nenhum comentário:
Postar um comentário