Hello,
I have a document library with png files. Those png files are all intended to be emailed to different recipients. However, some recipients are to receive more than 1 file. I would like them to get only 1 email and am uncertain how to write this flow.
In the screenshot from this doc library, I would like them to group by field "AttachmentPrefix" and then be sent to the email address associated with that Prefix. So in the image below, the green items would be sent in one email; the blue items would be sent in one email; and the red ones would be sent individually.
Here is a specific step by step walk through:
First the overall Flow
Look down below for walkthrough
First I have my SharePoint list. It is essentially like yours, I just dont have a link. I am going to want to send one manager, all the rows that have the same Serial Number. Essentially how you want to group by prefix, I am grouping my Serial Number. I have 2 unique serial numbers, so the flow will end up sending 2 emails.
Note: I also have an email address field I just didn't show it.
Step 1. I am using a Manual Trigger for Ease
Step 2. Add an Initialize Variable and paste this in. This will give styling to your table. Which we will build shortly
Since you want to send an email and I want it to look like, I am building a Table for the Email.
<style>
table {
border: 1px solid #1C6EA4;
background-color: #EEEEEE;
width: 40%;
text-align: left;
border-collapse: collapse;
}
table td, table th {
border: 1px solid #AAAAAA;
padding: 3px 2px;
}
table tbody td {
font-size: 13px;
}
table thead {
background: #1C6EA4;
border-bottom: 2px solid #444444;
}
table thead th {
font-size: 15px;
font-weight: bold;
color: #FFFFFF;
border-left: 2px solid #D0E4F5;
}
table thead th:first-child {
border-left: none;
}
</style>
Step 3. It is our Get Items
Now in the get items you can leverage a View to limit how many of the custom columns (that you added) are returned. It is important to note, that you cannot limit the SYSTEM/Standard columns, which stinks.. but it is what it is. My list didn't have many rows or custom columns so I didn't use a View to limit them.
Step 4. Now what you wanted was to send an email based on grouping the Unique Prefixes, so that an email only contained those Prefixes.
So what we are going to do are 2 things.
In this step You wil add a Select action. I renamed it to Get Serial Numbers. then I created a Key Name up, which was SerialNumber with no spaces. Its up to you what you name it. For you thought this would be your Prefix column.
In the value, I want to put the Dynamic Property that was created by the Get Items. So click in value box, then when the dynamic Property window appears scroll down under Get items and click Serial Number (in your case the Prefix Column Name)
Now what this does is create an array that ONLY has the Serial Numbers in it, BUT they are not unique yet. Now we have to do the second step
Step 5. Add a Compose action. I renamed mine to Generate Unique Serial Number List
And in here, we are going to use the union expression to essentially join the output of the Get Serial Numbers (select action), to itself. By doing this, it removes the duplicates.
So for me I typed this. In your case, you would type body('Enter the name you gave your select and add _ (aka an underscore) where ever a space was, as spaces are not legit here')
union(body('Get_Serial_Numbers'),body('Get_Serial_Numbers'))
Step 6. Now we have a unique array of Serial Numbers (aka Prefixes) and we need to loop through them
-Add an Apply to Each. I renamed mine Loop through Unique Serial Numbers.
For in the Input, where it says Select the output from a previous step, we need to pick the output of the Compose, where we created our union / aka unique list so I clicked inside the select an output box, when the dynamic properties appeared, I clicked on Outputs under the Compose I called Generate Unique Serial Number List. Remember this is an Array of unique Serial Numbers. We will use this loop to then Filter the original Get Items data, to only gives us the Rows that have this specific Serial Number (aka prefix).
2
Step 7. Inside the Loop
-Ok inside the loop the first thing we need to do is Filter the Get Items data, to only have the rows we want based on the current Unique Serial Number, in our Apply to Each Loop
Now we do this by clicking the From and then in Dynamic properties, click the value property under Get Items
Then on the left we also click the box and then in the Dynamic Properties under Get Items we pick Serial Number
We leave the default of is equal to
Lastly, in the right we need to use the Value of the current Unique Serial Number in our Loop. I do this, with this expression. which is typed into the Expression window
items('Loop_through_Unique_Serial_Numbers')['SerialNumber']
Step 8. Next, if you recall, even if we had Filtered the Columns by a view in our Get Items, we wouild still have gotten all the ugly System/Standard columns and we do not want that in our table. So we use a Select, to only grab the Columns we want, but not from Get Items, but from the output of the Filter, since it only has the rows we care about.
The From is the Dynamic Property output from the Filter
Then 1:1 we add in our Key / Value Pairs
You can see I added 4 columns. On the left you type a string, on the right, and this is something that boggles alot of peoples minds is you put in the following code, changing only the Column name each time.
item()['Title']
Now normally item is reserved for inside an Apply to each loop to access the current loop iteration row/data but when doing a Filter, its sort of a built in loop, so you have to use item()['ColumnName'] to get out what you want from the Filter and into the Select
Step 9. Create HTML Table
Now that we have the exact data that we want and the exact columns we want, we can use the Outputs of the Select to automatically build a nice table.
So add a Create HTML Table action. for the From, select the Dynamic output property of your select
Step 10. Send Email to Manager
Add a Send Email V2 Action
For the To: I will get to that in a moment
For the body Here is what I added
You can see I typed in the Dear Prefix Owner, etc
But what you also see are two side by side Outputs
The First one, is the Output of our Compose, from the first step, where we added CSS. So click inside the email body area, then find the Dynamic output property of our CSS Compose from at the top of my flow
Now next too it, is the Dynamic Output property of the HTML Table action we used.
Ok now lets talk about the Email. In your case I am assuming the email gets duplicated on every line of a Given Prefix. Which means it doesn't matter if we get it from Row 1 or Row 2232323 for a given Prefix, the email will be populated. But to make it easy on US, we are going to purposely point at the first Row every time. There is no reason to loop one the Email Address.
So in the To we will click there.
Then I will click Add dynamic content
Then in the Expression window. I will type this:
body('Filter_the_Select_Columns_Action_by_Unique_Serial_Number')[0]['EmailAddress']
The code says, look at the body (which is the output of a filter), look at the first row [0] and pull the EmailAddress value.
NOTE: If you have no rows it would fail, but I would let you practice a little and say you should add error handling (just to be safe).
And here you can see my run is solid green
And I received 2 emails, as you recall I said I had 2 unique Serial Numbers
And here is what they look like
And
That concludes this sample. Now I wrote this specifically for you, so I would appreciate if this helps you, that you mark this one as Resolved and also a thumbs up (they are separate) so it shows up for others to find.
Cheers
If you like my answer, please Mark it as Resolved, and give it a thumbs up, so it can help others
Thank You
Michael Gernaey MCT | MCSE | MCP | Self-Contractor| Ex-Microsoft
https://gernaeysoftware.com
LinkedIn: https://www.linkedin.com/in/michaelgernaey
Dear Community Members, We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd. During this period, members will not be able to Kudo, Comment, or Reply to any posts. On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities. What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!
We are excited to announce the Summer of Solutions Challenge! This challenge is kicking off on Monday, June 17th and will run for (4) weeks. The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities. Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”) - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024 Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods. You must enter into each weekly Entry Period separately. How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different. Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers. At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing. Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner. A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random. Individuals will be contacted before the announcement with the opportunity to claim or deny the prize. Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners. Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event. ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE** Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24 17 @Anil_g 7 @ManishSolanki 13 @eetuRobo 5 @David_MA 10 @VishnuReddy1997 5 @SpongYe 9JhonatanOB19932 (tie) @Nived_Nambiar 8 @maltie 2 (tie) @PA-Noob 2 (tie) @LukeMcG 2 (tie) @tgut03 2 (tie) Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate @Deenuji 12@ManishSolanki 19 @Anil_g 10 @NathanAlvares24 17 @VishnuReddy1997 6 @Expiscornovus 10 @Tjan 5 @Nived_Nambiar 10 @eetuRobo 3 @SudeepGhatakNZ 8 Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22 Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2 Anil_g2 SharonS2
On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners. The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights. Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.
We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for. We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer. Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together. Here's to new beginnings and endless possibilities! If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport. To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages