I'm building a flow that takes file names from a folder and breaks them down into the same data points that are present on an Excel spreadsheet I'm going to forward them into.
My flow works from one end to the other - however, the issue is that my For Each loop isn't iterating every item.
I've targeted a folder with 28 items in it. It is supposed to iterate 28 loops of the process, however, it only fires 3 times. The first iteration is the always the first item, it doesn't seem to matter if I change WHAT this first file is, and the last 2 files in the bottom of the list. It will skip over almost the entire list, even if it displays the list of files as longer than 3.
Any ideas what's causing this?
***EDIT:
I put together a counter to track how many iterations of the For-Each loop my Flow has processed already. It looks like this:
Total Files = Total Files - Total Files
Total Files = (0) + 1
At the end of the For-Each loop I show how many iterations so far:
Then, when all the processing is done and the last file has been iterated, I show how many iterations vs how many files...
If Iterations = Total Files then the For-Each worked as intended. Which it did. 29 files, looped 29 times.
The issue I was experiencing before this edit was more a behavior of the For-Each loop itself and I was misinterpreting what that behavior was.
The files I'm iterating are sorted alphabetically, and in their destination worksheet they're also sorted alphabetically. In my all-knowing monkey-brain I thought the behavior from the For-Each loop would replicate this alphabetical sort same as the files are listed. Instead, For-Each would randomly select the next file to iterate, going from alphabetical A to M then Z, then back to C. No idea why. The alphabetical sort of the data isn't crucial for my Flow to work right, but it would be nice to watch the Flow go from sorted file 1 to sorted file 2, rather than 1 to... any other number, then eventually back to 2.
For-Each WAS iterating each item, just wildly out of order.
Solved! Go to Solution.
Right.
So, previously, when you tried to use "For Each %CurrentItem% in %Files%",
%CurrentItem% was simply %Files[0]%, then %Files[1]%, then %Files[2]% and so on. All lists start with index 0 as the first item. In this case, we are saying Loop starting at 0 to %Files.Count - 1% where the LoopIndex is going to be the number inside the brackets and Files.Count-1 is the last index number we need. Ex. 28 files, 27 is the last index, because the first one starts at 0.
As for Files.Count, all variables have properties. You can see all datatype properties here:
https://docs.microsoft.com/en-us/power-automate/desktop-flows/datatype-properties
I actually keep that link saved on my desktop. You can also see properties and even select them by opening up a variable when building out a PAD command. Ex:
This is actually better, because one time I tried to do an email property "Email.From" and it was wrong, but 99% of the time, it is just %Variable.Property% syntax.
For your last sentence above, you need to replace %CurrentItem% with %Files[LoopIndex]%. Remember, %LoopIndex% is what loop you are on, starting at 0. %Files.Count - 1% is the %LoopIndex% limit that you put in the "End to" field of the Loop command; see below:
You can sort a list based on any properties you can arise from the values in the list, so a %Files% list can be sorted alphabetically, or by date last modified, etc.
The next 52 steps are all involved in the processing of the current item. The flow ends with the "End" tag for the For Each loop.
One of the last things the Flow does is open an Excel workbook, attach to the running workbook, pass vars via a VBA macro, and then close the attached-to workbook.
The rest of the flow's operation happens inside the For Each loop confines (between the "start" For Each loop tag and the "End" For Each loop tag).
Is it possible that at some point you accidentally replace a variable, such as %Files%?
If you still can't find the answer, then I recommend changing to a Loop:
Loop 0 to %Files.Count - 1% increment 1
Do your processes: You will have to change all %CurrentItem% references to %Files[LoopIndex]%
I've run through a few similar issues in VBA Excel where I have a long list of items to iterate through piecemeal. I've only ever had to count the contents of the list once, and that was likely do to poor For-Each exception handling. I haven't poked around the internet yet, but do you know if PAD offers any "count" functions as drag-and-drop functions? (The same way you drag and drop other process functions like a For Each loop or Parse Text).
I had come to work today thinking about this issue and the method you described is very similar to the solution I had come up with. In my attempt to apply the solution I found that I am lacking some critical underlying knowledge about PAD, I think you've succinctly highlighted my knowledge gap with the ".count" method modifying the "%Files%" var.
Please hold my hand just one moment longer -
To apply your solution, I need to navigate to my Flow operation where I reference "%CurrentItem%" and replace the var with "%Files.Count - 1%" - as well as replacing my For-Each loop with a Loop?
Right.
So, previously, when you tried to use "For Each %CurrentItem% in %Files%",
%CurrentItem% was simply %Files[0]%, then %Files[1]%, then %Files[2]% and so on. All lists start with index 0 as the first item. In this case, we are saying Loop starting at 0 to %Files.Count - 1% where the LoopIndex is going to be the number inside the brackets and Files.Count-1 is the last index number we need. Ex. 28 files, 27 is the last index, because the first one starts at 0.
As for Files.Count, all variables have properties. You can see all datatype properties here:
https://docs.microsoft.com/en-us/power-automate/desktop-flows/datatype-properties
I actually keep that link saved on my desktop. You can also see properties and even select them by opening up a variable when building out a PAD command. Ex:
This is actually better, because one time I tried to do an email property "Email.From" and it was wrong, but 99% of the time, it is just %Variable.Property% syntax.
For your last sentence above, you need to replace %CurrentItem% with %Files[LoopIndex]%. Remember, %LoopIndex% is what loop you are on, starting at 0. %Files.Count - 1% is the %LoopIndex% limit that you put in the "End to" field of the Loop command; see below:
Delightful.
Thank you very much, @MichaelAnnis. I'll give this a try and see if this remedies my issue.
I realize this isn't exactly the solution you suggested but its something I was curious to try.
I noticed that my For-Each loop was skipping over a (random) large swathe of my test files to iterate. While frustrating over the specifics of my Flow to make it work, I realized I could simply cause it to count how many times it iterates the files vs how many files it SHOULD have iterated.
File count var: <%Files.Count%>
For Each count var <%FileCount%>
Behold, the tiny bit of code PAD needed to show me this behavior. With a small sample of files, (5), my For-Each iterates all five files correctly... more testing coming...
Jeez I feel kinda... errr... not the most pleasant words.
Using the above vars in a message box I discovered that the problem outlined in the OP is actually a fabrication of my imagination LMFAO.
PAD HAD been iterating each file, or at least, is now iterating each file. However I think what originally threw me for a loop was the fact that PAD didn't iterate the files ALPHABETICALLY. PAD elected the file with index number 0, which happens to be the first file sorted alphabetically, then elected the next item, index 1, as some random file non alphabetically sorted and so on. I couldn't tell you the exact sort order, index 1 - 29, but I can tell you for sure it did not go A, B, C, D, E...
It's not exactly a crucial behavior for my Flow to iterate alphabetically, but if it were, do you have any idea how I might go about forcing PAD to iterate alphabetically?
You can sort a list based on any properties you can arise from the values in the list, so a %Files% list can be sorted alphabetically, or by date last modified, etc.
@MichaelAnnis I'd be horribly lost and without either paddles without your help!!
Thank you very much! You've opened my eyes in such a wonderfully short, sweet, and to-the-point way. I cannot thank you enough!
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