How to Automate Your Daily Reports in Microsoft 365 with Power Automate: A Step‑by‑Step Guide
You know that feeling when you stare at a half‑filled spreadsheet at 9 am, wondering if you’ll ever get out of the reporting loop? I felt that way every weekday until I discovered that Power Automate can do the heavy lifting for me. In this post I’ll walk you through a simple, no‑code flow that pulls data, formats it, and emails it to the right people—all while you sip your coffee.
Why automate daily reports?
Daily reports are the lifeblood of many teams. They keep managers in the loop, surface trends, and help catch issues early. But building the same report by hand every day eats up time you could spend on strategy or creative work. Automation gives you three big wins:
- Time saved – a few clicks replace a 15‑minute manual task.
- Consistency – the same layout, the same numbers, no human slip‑ups.
- Visibility – the flow can log each run, so you always know when a report was sent.
If you’re already using Microsoft 365, you have everything you need right at your fingertips. No extra software, no fancy servers – just Power Automate, Excel (or a SharePoint list), and Outlook.
Getting ready – what you need
Before we dive into the flow, make sure you have these basics in place:
- A data source – most people use an Excel workbook stored in OneDrive for Business or a SharePoint document library. The file should have a table with a clear header row.
- A destination – usually an Outlook email, but you can also post to Teams or save a PDF to a folder.
- Power Automate access – any Microsoft 365 license includes it, so just sign in at flow.microsoft.com.
If you’re like me and keep your reports in an Excel file that lives in a SharePoint site, you’re already set.
Step 1 – Set up your Excel (or SharePoint) source
- Open the workbook you want to use.
- Highlight the range that holds your daily data and press Ctrl + T to create a table. Give the table a simple name, like
DailySales. - Save the file back to OneDrive or the SharePoint library. Remember the exact path – you’ll need it when you pick the file in Power Automate.
A quick tip: keep the table on a single sheet. Power Automate reads tables, not arbitrary ranges, so this avoids a lot of confusion later.
Step 2 – Build the flow in Power Automate
Create a new flow
- Go to flow.microsoft.com and click Create → Scheduled cloud flow.
- Name it “Daily Sales Report” and set the schedule to run every weekday at, say, 8 am.
Add the Excel action
- Click + New step and search for List rows present in a table (under Excel Online (Business)).
- Choose the location (OneDrive or SharePoint), the document library, the file, and the table name (
DailySales).
At this point the flow pulls every row from your table each time it runs.
Filter the data (optional)
If you only need today’s rows, add a Filter array action:
- In the From field, select the output of the previous Excel step.
- Click Edit in advanced mode and use an expression like:
@equals(item()?['Date'], utcNow('yyyy-MM-dd'))
Replace Date with the exact column header that holds the date. This keeps the report focused on the current day.
Create the email body
- Add a Compose action.
- Use the dynamic content from the filtered array to build a simple HTML table. For example:
<table border="1" cellpadding="5"><tr><th>Product</th><th>Units</th><th>Revenue</th></tr>
@{join(apply(outputs('Filter_array'), item(), '<tr><td>'+item()?['Product']+'</td><td>'+item()?['Units']+'</td><td>'+item()?['Revenue']+'</td></tr>'), '')}
</table>
If you’re not comfortable with HTML, you can just join the rows into plain text – the email will still be readable.
Send the email
- Add Send an email (V2) from the Outlook connector.
- Fill in To with the distribution list or individual addresses.
- Set a clear subject, like “Daily Sales Report – @{formatDateTime(utcNow(),'yyyy-MM-dd')}”.
- In the body, paste the output of the Compose step. Turn on Is HTML so the table renders nicely.
Save and test
Click Save, then hit Test → Manually. Power Automate will run the flow once and show you each step’s output. If the email looks good, you’re ready to go live.
Step 3 – Test and tweak
Even a well‑planned flow can hit a snag the first few times. Here’s how I fine‑tune mine:
- Check the run history – each run logs success or failure. Click a failed step to see the error message.
- Watch for permission issues – the flow runs under your account, so make sure you have read access to the Excel file and send‑mail rights for the recipients.
- Adjust timing – if your data source updates later in the morning, push the schedule to 10 am instead of 8 am.
A small anecdote: the first time I set the schedule at 7 am, the email arrived with a half‑filled table because the sales team hadn’t entered the numbers yet. A quick shift to 9 am solved it, and I learned to coordinate schedule with data availability.
Tips to keep it smooth
- Use a static file name – if you rename the workbook, the flow will break. Keep the name stable or add a version‑control step.
- Limit rows – large tables can slow the flow. If you only need the last 100 rows, add a Top Count parameter in the Excel action.
- Add error handling – wrap the email step in a Scope with a Configure run after rule that sends you a warning if the flow fails.
- Document the flow – add a brief description in the flow’s settings. Future you (or a teammate) will thank you when you revisit it months later.
That’s it. With just a handful of steps you’ve turned a repetitive manual task into a reliable, hands‑free process. The next time you open your inbox and see the daily report waiting, you’ll know you built it yourself, and you’ll have a few extra minutes to focus on the work that really matters.
- → 5 Proven Productivity Hacks for Distributed Teams That Actually Work @remotesync
- → The Ultimate Guide to Picking a Remote-Work Monitor That Boosts Your Productivity @remotescanscout
- → How to Build a 30‑Day Habit Stack That Actually Sticks @habitstackhub
- → A Step‑by‑Step Mental‑Fitness Plan for Executives Facing High‑Pressure Projects @promindtherapy
- → How to Boost Your Reading Speed by 50% in 4 Weeks Without Losing Comprehension @rapidreadinsights