Power Apps (Part 21)

Microsoft Power Automate Reports

Microsoft Power Automate Reports

Creating a Flow that emails a Report as a PDF file

I created a Flows solution

I added a new Cloud flow

The user will be asked to provide a Report Name and an Email address. The Success variable is set to false.

I used the List rows action...

... to fetch a row from the Reports table

I filtered the results to the Report with the user provided name

I added an HTTP action

I selected the Invoke an HTTP request action

I entered the report's base resource url twice (my unique https://XXX.crm.dynamics.com url)

A connection was created and I entered the HTTP reuqest details
/CRMReports/rsviewer/reportviewer.aspx
Content-Type: application/x-www-form-urlencoded
id={report id}

The flow designer automagically added the Apply to each action

I added three Compose actions

Together the three Compose actions establish the pdf download url
add(indexOf(outputs('Invoke_an_HTTP_request')?['body'],'"PdfDownloadUrl":"'), 18)
sub(indexOf(outputs('Invoke_an_HTTP_request')?['body'],'","PdfPreviewUrl"'),outputs('Compose'))
replace(substring(outputs('Invoke_an_HTTP_request')?['body'],outputs('Compose'),outputs('Compose_2')),'\u0026','&')

I added a Do until action

I added a Do until action to ensure that the flow would retry the HTTP GET and Email actions until the Success variable was set to true

I added three scope actions

The third scope action was configured to catch errors.

I added the happy path logic to the second scope

I attempt to fetch the report as a PDF file

I attempt to send the pdf file as an email attachment

I set the body of the email, the body of the email attachment, the email to and the email subject.

If no errors are generated I set the value of the Success variable

If no errors are generated I set the value of the Success variable to true

When I run the flow this email is received

The email has this PDF file attachment