Hi @YvonneTian ,
I was just sharing this flow with someone else and saw your post. This one is from an Excel table but still valid if you are using a SharePoint List too, just change the Excel part to List.
On #1 for the 9 AM run, change trigger from when an item is changed or modified (if that's what it is) and add a Scheduled flow Monday 9 AM, you can select both options

For the one email option, here's the guts of the flow. It's a little long but not too bad. This example has a create csv and create file (to attach) but skip those two steps.


First two variables...

Next you will add all email addresses to a variable and then in the next step, remove the duplicates...

The last Apply to Each is for the single email per address...

When you add filter array for the next step, this will automatically wrap itself in an apply to each. Here I am selecting my Excel table (your SP list) and I am filtering the Current Email to the Email column in the List.
Next, I create an HTML table from my filter array. The values are expressions, not dynamic content so you would enter these in, as an example for Description, as item()?['Description'] . Do this for each of your columns in your html table.

Next I am putting a border and some cell spacing on the table of the email. Remember, skip create csv and create file (different example).
replace(body('Create_HTML_table'),'<table>','<table border="1" style="padding:10px">')

Lastly, your Send Email (V2). Your to: is the Current Item of the Apply to Each and your html table content for the email is the variable formatTable, as shown below.

It took me a couple of tries the first time to get this right but now use this multiple times a day in multiple flow and is very useful. Ping me if you need help. If this was helpful, please mark as a solution to help others find it quickly too!