cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
EggThat
Frequent Visitor

Sending one email containing multiple rows based of if statements

Hi all, 

 

I am trying to wrap my head around this but can't seem to get it working..

 

Sample Data (this data is stored in a sharepoint list):

NameEmail addressPhysical addressDeployment dateDeviceIDConfirmed
JonJon@me.com123 fake streetMay 4th 202212345Yes
Jon Jon@me.com123 fake streetMay 4th 202212346Yes
Jane Jane@me.com123 fake streetMay 15th 202212347Yes
Dave Dave@me.com123 fake streetMay 5th 202212348No

 

Essentially the flow logic needs to work like this:

 

1. run automatically Every weekday (mon-fri)

2. If Confirmed = yes and deployment date = Today +2 working days

3. Send email to employee with confirmation containing deployment date, device ID, address..etc

 

Some users have multiple devices like Jon so i want to group information into 1 instead of sending multiple emails to the same user:

NameEmail addressPhysical addressDeployment dateDeviceIDConfirmed
JonJon@me.com123 fake streetMay 4th 202212345Yes
Jon Jon@me.com123 fake streetMay 4th 202212346Yes

 

Hope i explained it correctly, and thanks in advance for helping a newbie like myself!

1 ACCEPTED SOLUTION

Accepted Solutions

@EggThat 

I built out your Flow.  The first part of my Flow (down to Get items) can be see in my previous post.

Let me know if you have any questions.  I could have added a parse JSON action but I didn't think it was necessary.  Also, I am using a Select along with a Compose action containing a union expression to create the array of unique email addresses - I like this way more than creating a variable and looping.  Use the output of the Create HTML table in your email.  My apply to each action points to the output of the Unique Emails Compose action - this loops you through each unique email address.

Note: In my filter array action I am point to the output of the Select 2 action - not the first select action - I could have labeled that better...

image.pngimage.pngimage.pngimage.pngimage.png

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott

View solution in original post

11 REPLIES 11
ScottShearer
Super User
Super User

@EggThat 

Where is your data stored?  SharePoint?

 

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott

Yes, all the data is store in a sharepoint list.

@EggThat 

This will be a reasonably complicated Flow.

First, you need to make sure that today plus 2 days is a week day.  If not, add days to get to the next Monday:

image.pngimage.png

Next,  you need to retrieve only the items that meet your criteria.  You'll use a filter query in your Get items action for that.

image.png

Then, you need to create an array of unique emails, select the items associated with those emails and group them into an HTML table and email.

Here is a link that will explain this part of your Flow.

If you get stuck, please let me know.

 

 

 

 

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott
EggThat
Frequent Visitor

Ive managed to build the flow that you've outlined and i sort of understand what it's doing. however when i go to the link to build an array of unique emails, i'm lost. The example is filtering based on due date but i've already filtered out the sharepoint list to only show items i want to mail out and I just need to group all lines that contain the same email address field and send that out.

@EggThat 

Can you post screen shots of what you have so far?

Here is what you need to do next:

  1. Generate a list of unique email addresses
  2. Loop through the array of unique emails (needed because you'll loop through each one)
    1. Use a select action inside of the loop that grabs the columns that you want in the email
    2. Use a filter array action to filter the output of the select action to the current email address
    3. Build an HTML table using the Create an HTML table action from the output of the filter array
    4. Send an email to the current email  address and include the HTML table

The link that I provided details one way to approach what I have just outlined.

 

 

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott

the first part seems to be working well to gather the dates and ensure it's weekdays only +2.

 

However i'm still getting unwanted results on the automated email. For example, as test data i put 2 rows of deployment dates to employee A and 2 deployment dates to employee B. Total of 4 lines in the dataset. All 4 are confirmed and abide by the rule of weekday +2.

 

it SHOULD be sending 1 email to each employee containing both deployment dates for that respective employee, however i am getting 1 email sent out to each employee with both employeeA and employeeB in the To field of the email as well as both user's data in the actual email content

EggThat_3-1651249282149.png

 

Here is how i have it set up:

 

EggThat_4-1651249374678.png

EggThat_5-1651249405453.png

EggThat_6-1651249437178.png

 

Any idea where i went wrong?

 

@EggThat 

I built out your Flow.  The first part of my Flow (down to Get items) can be see in my previous post.

Let me know if you have any questions.  I could have added a parse JSON action but I didn't think it was necessary.  Also, I am using a Select along with a Compose action containing a union expression to create the array of unique email addresses - I like this way more than creating a variable and looping.  Use the output of the Create HTML table in your email.  My apply to each action points to the output of the Unique Emails Compose action - this loops you through each unique email address.

Note: In my filter array action I am point to the output of the Select 2 action - not the first select action - I could have labeled that better...

image.pngimage.pngimage.pngimage.pngimage.png

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott

I've configured as you have, and am receiving 1 email per user with multiple rows.

 

the problem i'm facing now is that the body of the HTML table is only giving me the email address, even though i've selected multiple fields under Select2:

 

EggThat_2-1651258442376.png

EggThat_4-1651258605707.png

 

 

@EggThat 

Great Job! You're almost there!

Please verify that the output that you are referencing in the email body is the output of the Create an HTML table action.

Also, add the email to the Select 2 Action - it needs to be there so that you can filter on it.  If you don't want it to appear in the HTML table, select Custom rather than Automatic in the HTML action and select only the columns that you want using the item() expression - see my screen shot below.  You can't have spaces in the HTML header - you can use an underscore.

image.png

 

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott
EggThat
Frequent Visitor

@ScottShearer Yes! i can sense how close we are.

 

I've added the email as you mentioned. the output in the email is from the Create HTML Table

 

EggThat_0-1651260238802.png

EggThat_3-1651260323712.png

 

Unfortunately, it still only shows the email address from the Output of the Create HTML table

 

EggThat_4-1651260428050.png

 

ScottShearer
Super User
Super User

@EggThat 

I believe the issue is that your Filter array action is drawing from Select rather than Select 2.  It is pointing to the first select action and not the one inside the loop.  Make that change and you might be there!

If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

Scott

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Users online (3,463)