---
title: How to Automate Your Daily Reports in Microsoft 365 with Power Automate: A Step‑by‑Step Guide
siteUrl: https://logzly.com/365hackhub
author: 365hackhub (365 Hack Hub)
date: 2026-06-20T15:04:33.976675
tags: [productivity, microsoft365, powerautomate]
url: https://logzly.com/365hackhub/how-to-automate-your-daily-reports-in-microsoft-365-with-power-automate-a-stepbystep-guide
---


**Disclosure: We are reader supported, and earn affiliate commissions when you buy through us.**


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](/365hackhub/automate-your-daily-tasks-in-microsoft-365-with-power-automate-a-stepbystep-guide-for-busy-professionals) can do the [heavy lifting](https://www.amazon.com/s?k=heavy+lifting&tag=organizationtip101-20) 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](https://www.amazon.com/s?k=creative+work&tag=organizationtip101-20). 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](https://www.amazon.com/s?k=Microsoft+365&tag=organizationtip101-20), 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:

1. **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.  
2. **A destination** – usually an [Outlook email](https://www.amazon.com/s?k=Outlook+Email&tag=organizationtip101-20), but you can also post to Teams, for example to [automate meeting minutes in Teams](/365hackhub/automate-meeting-minutes-in-teams-with-power-automate) or save a PDF to a folder.  
3. **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](https://www.amazon.com/s?k=Excel+file&tag=organizationtip101-20) that lives in a SharePoint site, you’re already set.

## Step 1 – Set up your Excel (or SharePoint) source

1. Open the workbook you want to use.  
2. Highlight the range that holds your daily data and press **Ctrl + T** to create a table. Give the table a simple name, like `DailySales`.  
3. 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

1. Go to flow.microsoft.com and click **Create** → **Scheduled cloud flow**.  
2. Name it “Daily Sales Report” and set the schedule to run every weekday at, say, 8 am.  

### Add the Excel action

1. Click **+ New step** and search for **List rows present in a table** (under Excel Online (Business)).  
2. 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:

1. In the **From** field, select the output of the previous Excel step.  
2. 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

1. Add a **Compose** action.  
2. 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

1. Add **Send an email (V2)** from the [Outlook](/365hackhub/master-outlook-inbox-zero-7-hidden-rules-and-shortcuts-every-professional-needs) connector.  
2. Fill in **To** with the distribution list or individual addresses.  
3. Set a clear subject, like “Daily Sales Report – @{formatDateTime(utcNow(),'yyyy-MM-dd')}”.  
4. 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](https://www.amazon.com/s?k=sales+team&tag=organizationtip101-20) 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](https://www.amazon.com/s?k=large+tables&tag=organizationtip101-20) 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.
