I have been struggling to create a flow that will send a recurring (weekly) email, with a digest summary of all tasks less than 100% complete. There is a template already that will send your own, but most of my team do not have the background to create their own flow, so I wanted to create a flow that would just do it for them on my behalf. I've tried everyway that I can think of, and each different way I get a different type and quantity for failures.
So flow would be basically once a week, pull all tasks less than 100% complete (so open) and send a digest email to every user that has an open task with their specific tasks. Individual email, to individual user, with their specifically individual tasks in digest format?
Can this be done?
Thank you in advance, from a person who is probably way above their head in trying to understand flows, but silly enough to try and do it anyway.
@ChristianAbata I haven't tried to put it in any specific place, the only place I've tried to pull the % complete data is what ever transfers over from the value assignments.
Since, I'm learning and have no real idea what I'm doing - I basically have been trying to cannibalize this flow:
And trying to figure out different ways to add way that it send out to people instead of sending my tasks to myself. If that makes sense. Alot of our tasks don't have specific due dates, so I have had to try adding a condition for null value due date after the get tasks, not sure if that overly complicates what I'm trying to do as well or not.
This flow works to send me my stuff obviously, but I don't know how to substitute out "List my tasks" to get tasks or everyone else individually, and then send it out to them individually later in the flow.
Thanks for entertaining my question and the help!
@BillPope I was testing what you need and to know the percentage of a task you can use this.
and to know the user follow this.
So, I'm reasonably sure I missed something here - the flow runs successfully, but there are two glaring problems:
The email that gets sent out includes everyone in the team's task, not just mine. I want to filter it down so that the email only shows mine, the email that Team Member 1 gets is only Member 1 tasks, email that Team Member 2 gets is only Member 2 tasks, not everyone getting everyone's task. If that makes sense.
The second glaring problem, when I run the task I get 8 emails - all with the same information (everyone's tasks).
Here are screen shots of the flow...
You probably need to use 'List tasks' instead of 'List my tasks'. As far as I remember tasks that are not completed have no 'Completed Date' assigned (Filter Array probably needed).
Then you probably need to build a dictionary of 'Assigned to' users by iterating all through your filtered tasks. Once the array is built, you will probably need to use union() expression to supress duplicates.
Finally you probably need to iterate all through your 'Assigned to' users by means of an apply to each, inside it:
-Get user profile, to get current user's email
-Filter Array, assign as its input 'List tasks' output, to filter uncompleted tasks assigned to current user
-Create HTML table with Filter Array results, select desired Columns
-Send an email
Do you also need to send Task Description (i.e. Notes) in your email? THis will make things more complex
Hope this helps
oh @BillPope what you can do is create a string variable at the begining of your flow then save your user value inside apply to each with append string, then outside apply to each send the email using the value in String variable.
shure please see this example of how to use but with array.
In the example I'm saving all channels name into the variable outside apply to each, to use it outside. In your case you need initialize string variable, let the value in blank an then inside your apply to each add append to string variable and select in name your initialized varible, in value of course you need the value that you need to save in your case the email of user I think.
Please let me know if you made it.
So I tried it, and afraid I must be missing something... the flow succeeds, but still have the same result. Members are getting ALL of the planner tasks, not just the ones they are assigned, and are getting 8 duplicate copies of the same email. Here are pictures of the flow...
^^ Where I placed (maybe I have it in the wrong place?
Here are the parameters I put in...
Here you are the dictionary approach!
More tricky than I initially expected, but finally up and running.
So I am first sharing the screenshots from a Flow that sends a report to each assigned to person with all the tasks assigned to him/her. Once implemented this way, you need some extra steps to report the tasks that are not ject completed only. But the fastes way to build it is this one, believe me.
So this is the overall picture of the design (remember, all tasks reported)
Now let's see in details the first part of the flow:
And, finally, let's see in detail the last part of the flow:
Taking into account 'Power Automate' is not the best tool in terms of performance, the execution of this dictionary based approach is really fast
Now, which are the extra steps?
Once implemented the flow first version, just need to add a 'Filter array' just after 'List tasks', and make sure you remove 'List tasks' output value in a couple of action blocks and assign 'Filter array' output instead.
Why not adding Filter Array stuff from the beginning? Because if you do so, you will have some problems to convince Flow UI not to add automatically extra 'Apply to each' action block. Once you need further assistance to add them, please let us know
Hope this helps
Hi, thanks so much for the step by step and pictures. Also sorry for the delay, other work projects took up my time this last week.
I thought I followed your instructions pretty well, but I get this error when running the flow
The variable 'teamArray' of type 'Array' cannot be initialized or updated with value 'union(outputs('Compose_auxTeamArray'),body('Select_userIds'))' of type 'String'. The variable 'teamArray' only supports values of types 'Array'.
Note - When I started to put this step in, there was no "Function" option, so I just free flow typed that (not sure if I missed something why I didn't get the option to add a function to the content of that line, or if I have to preface the "union...." with something so that it knows what to do with the string?
So in your 'Select userIds' you need to remove current Map values assigned, then click on the 'T' icon on the right...
...so you switch from keyvalue mode to text mode, then follow these steps to add your expression:
Hope this helps
@efialttes , I have been following this build and I will say its incredibly helpful. I was able to put together a similar flow and got it working up until the last filter array to filter the tasks by user id. I get nothing in the email but if I don't add a filter condition I do get all the tasks so it has to be something to do with the fx: string(item()?['_assignments]') argument. When I looked at the raw data I noticed that there is a "userId" under "_assignments". Is this what's missing and how would that fx look like if so? Would appreciate any help.
@efialttes Awesome solution, I was able to adapt this for my use case, sending a digest just to guest users who don't get notifications when tasks are assigned to them so a daily summary of their open tasks is better than nothing!