- Home
- Guides
- Power Automate
- How to send each person one email with their own Excel rows in Power Automate
How to send each person one email with their own Excel rows in Power Automate
Build a weekly Power Automate flow that reads an Excel table, finds each manager once, and sends each of them one Outlook email with a styled table of only their open rows.
Jump to a step (12)
This is for small offices that send the same kind of list to several people, like invoices per account manager, tasks per owner or orders per sales rep. Right now someone filters the sheet by person, copies the rows into an email and repeats it for the next person. It takes time, and sometimes a row ends up in the wrong email.
In the video I use a table of 14 invoices for three account managers. The flow skips the paid invoices, gets the unique list of managers, filters the rows for each one and sends one email each, with a clean styled table instead of the plain default one. Every name, email address and amount in the demo is made up.
What you need
- A Microsoft 365 work account with Power Automate
- Excel Online (Business) and Office 365 Outlook connectors (both Standard, no Premium license needed)
- An Excel workbook stored in OneDrive for Business with your data formatted as a table (no SharePoint needed)
- A column with each person's email address, plus a status column you can filter on
- Optional: the sample workbook, the expressions and the finished flow, free to download on this page
Step by step
0 of 12 done-
01
Prepare the Excel table
Upload the sample workbook to OneDrive. It has a table named Invoices with the columns Invoice, Customer, Amount, Due date, Status, Manager and Manager email. Three rows are Paid, and the flow skips them. The demo uses plus addresses so all emails land in one mailbox, but for real use put each manager's own address in Manager email.
-
02
Create a scheduled cloud flow
Click Create, then Scheduled cloud flow, and type
Weekly open invoices per managerin Flow name. Click Calendar, select 16, November, 2026 (a Monday) and select 08:00 AM in the time box. In Repeat every select Week, then turn off Sunday, Tuesday, Wednesday, Thursday, Friday and Saturday so the preview shows On Monday every week. Click Create. -
03
Set the time zone and hours
Click the Recurrence trigger. In Time zone, select your own time zone (I use (UTC-05:00) Eastern Time (US & Canada)). On these days already shows Monday. In At these hours select 8, press Escape, and type
0in At these minutes so the preview shows Runs at 8:00 on Monday every week. -
04
Get the unpaid rows from Excel
Click the plus icon below Recurrence, search for
List rows present in a table, click the Standard filter and select List rows present in a table. Then set it up:- Click the action name, type
Open invoicesand press Tab. - Set Location to OneDrive for Business and Document Library to OneDrive. Click Open folder, pick your workbook (mine is Video demos > Open invoices.xlsx) and select Invoices in Table.
- Click Advanced parameters, select Filter Query and DateTime Format, and press Escape. Type
Status ne 'Paid'in Filter Query and set DateTime Format to ISO 8601. - On the Settings tab, turn on Pagination and type
5000in Threshold.
- Click the action name, type
-
05
Get the list of manager emails
Click the plus icon, search for
Select, click Built-in and select Select. Rename it toManager emailsand press Tab. In From, click the lightning icon and select Open invoices > body/value. Click Switch to text mode next to Map, click the Map box, click fx, typeitem()?['Manager email']and click Add. -
06
Remove the duplicate addresses
Click the plus icon, search for
Composeand select Compose. Rename it toUnique managersand press Tab. Click Inputs, click fx, typeunion(body('Manager_emails'),body('Manager_emails'))and click Add. Union keeps every value only once, so in the demo eleven addresses become three. -
07
Loop through each manager
Click the plus icon, search for
Apply to eachand select Apply to each. Rename it toFor each managerand press Tab. Click Select an output from previous steps, click the lightning icon and select Unique managers > Outputs. Everything inside this loop runs once for each manager. -
08
Filter the rows for this manager
Click the plus icon inside the loop, search for
Filter arrayand select Filter array. Rename it toTheir invoicesand press Tab. In From, click the lightning icon and select Open invoices > body/value. Click Edit in advanced mode and type@equals(item()?['Manager email'], items('For_each_manager'))in the box. -
09
Add the table columns
Click the plus icon, search for
Select, click Built-in and select Select. Rename it toTable columns, press Tab, and in From select Their invoices > Body from the lightning icon. For each column, type the key in Enter key, click Enter value, click fx, type the expression and click Add:- Key
Invoice, expressionitem()?['Invoice'] - Key
Customer, expressionitem()?['Customer'] - Key
Amount, expressionformatNumber(float(item()?['Amount']),'C2','en-US') - Key
Due date, expressionformatDateTime(item()?['Due date'],'dd MMM yyyy') - Key
Status, expressionitem()?['Status']
- Key
-
10
Create and style the HTML table
Scroll to the end of the loop, click the plus icon, search for
Create HTML table, click Built-in and select Create HTML table. Rename it toHTML table, press Tab, select Table columns > Output in From and leave Columns on automatic. Then click the plus icon, search forCompose, select Compose and rename it toStyled table. Click Inputs, click fx, enterreplace(replace(replace(body('HTML_table'),'<table>','<table style="border-collapse:collapse;font-family:Segoe UI,Arial,sans-serif;font-size:14px">'),'<th>','<th style="background:#1F4E79;color:#ffffff;text-align:left;padding:8px;border:1px solid #d0d7de">'),'<td>','<td style="padding:8px;border:1px solid #d0d7de">')and click Add. -
11
Send one email per manager
Click the plus icon, search for
Send an email (V2)and select Send an email (V2). Click the Settings gear next to To, select Use dynamic content, then in To click fx, enteritems('For_each_manager')and click Add. TypeYour open invoices this weekin Subject. Build the Body in this order (use fx and Add for each expression):- Type
Hi - Add the expression
first(body('Their_invoices'))?['Manager'] - Type
,and press Enter - Type
You have - Add the expression
length(body('Their_invoices')) - Type
open invoices this week:and press Enter - Click the lightning icon, select Styled table > Outputs and press Enter
- Type
Please follow up on the overdue ones first.
- Type
-
12
Save, test and check the emails
Click Save, then Test, select Manually and click Test. Click Continue if the connections screen shows, then Run flow and Done. In the run, click Unique managers to see one address per manager, and check that the loop shows 1 of 3. Open one of the new emails and check the To: line and that the table holds only that manager's unpaid rows.
Tips and common problems
- Selecting Week in the schedule dialog turns on all seven days. Turn off the six days you do not want, or the flow runs every day.
- The word Paid in the filter query must match the value in your Status column exactly. Filter Query also supports only alphanumeric column names, so filter on a column without spaces like Status, not Manager email.
- If DateTime Format is not set to ISO 8601, Excel dates come in as serial numbers and the due date expression will not show real dates.
- List rows returns only 256 rows by default. With Pagination on, it returns up to 5,000 rows on a Microsoft 365 license, not all rows.
- If you named your actions differently, use your own names in the expressions, with underscores instead of spaces. The @ sign at the start of the Filter array condition is needed only in the advanced mode box, not in the expression editor.
- Running the flow again sends all the emails again. If a run looks stuck, check the run history before you run it again. If the expression editor refuses Add for a second, wait a moment and click Add again.
Questions
Do I need a Premium license or SharePoint?
No. Excel Online (Business) and Office 365 Outlook are Standard connectors, the other actions are built in, and the workbook lives in OneDrive for Business.
Do I have to type the long styling expression myself?
No. All expressions from the video, including the styling expression, are free to download on this page, along with the sample workbook and the finished flow.
Why does the table use inline styles?
Many email apps ignore style blocks. Inline styles on the table, header and cell tags keep the borders, padding and navy header visible in the email.
How do I remove the zero before single digit days?
The format dd MMM yyyy shows dates like 03 Nov 2026. Use a single d instead of dd if you do not want the leading zero.
Can I use this for tasks or orders instead of invoices?
Yes. Any Excel table with an email column works, for example tasks per owner or orders per sales rep. Change the column names in the expressions to match your table.
