Utilizar Scripts do Office e o Power Automate para enviar imagens por e-mail de um gráfico e tabela
Este exemplo utiliza Scripts do Office e o Power Automate para criar um gráfico. Em seguida, envia por e-mail imagens do gráfico e da respetiva tabela base.
Cenário de exemplo
- Calcule para obter os resultados mais recentes.
- Criar gráfico.
- Obter imagens de gráficos e tabelas.
- Email as imagens com o Power Automate.
Dados de entrada
Gráfico de saída
Email que foi recebida através do fluxo do Power Automate
Solução
Esta solução tem duas partes:
- Um Script do Office para calcular e extrair gráficos e tabelas do Excel
- Um fluxo do Power Automate para invocar o script e enviar os resultados por e-mail. Para obter um exemplo sobre como fazê-lo, veja Criar um fluxo de trabalho automatizado com o Power Automate.
Configuração: ficheiro do Excel de exemplo
Este livro contém os dados, objetos e formatação esperados pelo script.
Código de exemplo: Calcular e extrair gráficos e tabelas do Excel
Adicione o seguinte script ao livro de exemplo. No Excel, utilize Automatizar>Novo Script para colar o código e guardar o script. Guarde-a como Obter imagem do gráfico e experimente o exemplo!
function main(workbook: ExcelScript.Workbook): ReportImages {
// Recalculate the workbook to ensure all tables and charts are updated.
workbook.getApplication().calculate(ExcelScript.CalculationType.full);
// Get the data from the "InvoiceAmounts" table.
const sheet1 = workbook.getWorksheet("Sheet1");
const table = workbook.getWorksheet('InvoiceAmounts').getTables()[0];
const rows = table.getRange().getTexts();
// Get only the "Customer Name" and "Amount due" columns, then remove the "Total" row.
const selectColumns = rows.map((row) => {
return [row[2], row[5]];
});
table.setShowTotals(true);
selectColumns.splice(selectColumns.length - 1, 1);
console.log(selectColumns);
// Delete the "ChartSheet" worksheet if it's present, then recreate it.
workbook.getWorksheet('ChartSheet')?.delete();
const chartSheet = workbook.addWorksheet('ChartSheet');
// Add the selected data to the new worksheet.
const targetRange = chartSheet.getRange('A1').getResizedRange(selectColumns.length - 1, selectColumns[0].length - 1);
targetRange.setValues(selectColumns);
// Insert the chart on sheet 'ChartSheet' at cell "D1".
const chart = chartSheet.addChart(ExcelScript.ChartType.columnClustered, targetRange);
chart.setPosition('D1');
// Get images of the chart and table, then return them for a Power Automate flow.
const chartImage = chart.getImage();
const tableImage = table.getRange().getImage();
return { chartImage, tableImage };
}
// The interface for table and chart images.
interface ReportImages {
chartImage: string
tableImage: string
}
Fluxo do Power Automate: Email imagens de gráficos e tabelas
Este fluxo executa o script e envia por e-mail as imagens devolvidas.
Criar um novo fluxo de cloud instantânea.
Selecione Acionar manualmente um fluxo e selecione Criar.
Adicione um Novo passo que utiliza o conector do Excel Online (Empresas) com a ação Executar script . Utilize os seguintes valores para a ação.
- Localização: OneDrive for Business
- Biblioteca de Documentos: OneDrive
- Ficheiro: email-chart-table.xlsx (selecionado com o selecionador de ficheiros)
- Script: Obter imagem de gráfico
Este exemplo utiliza o Outlook como cliente de e-mail. Pode utilizar qualquer conector de e-mail suportado pelo Power Automate, mas os restantes passos partem do princípio de que escolheu o Outlook. Adicione um Novo passo que utiliza o conector Office 365 Outlook e a ação Enviar e e-mail (V2). Utilize os seguintes valores para a ação.
- Para: a sua conta de e-mail de teste (ou e-mail pessoal)
- Assunto: Reveja os Dados do Relatório
- Para o campo Corpo , selecione "Vista de Código" (
<>
) e introduza o seguinte:
<p>Please review the following report data:<br> <br> Chart:<br> <br> <img src="data:image/png;base64,@{outputs('Run_script')?['body/result/chartImage']}"/> <br> Data:<br> <br> <img src="data:image/png;base64,@{outputs('Run_script')?['body/result/tableImage']}"/> <br> </p>
Guarde o fluxo e experimente-o. Utilize o botão Testar na página do editor de fluxos ou execute o fluxo através do separador Os meus fluxos . Certifique-se de que permite o acesso quando lhe for pedido.