Hello,
I'm looking to create a flow where on a weekly schedule trigger, would it be possible to create folders; Monday; Tuesday; Wednesday; Thursday; Friday.
Ideally we'd like to append the date with a "-" between the day and the date.
Then at the end of the week have these folders moved to an archive folder, followed by the above re-running and creating new folders for the following week with their dates.
It sounds doable in theory but not sure where to start.
Hi @sudosaurus,
I would start with the folder creation part. You can create an array and use the utcnow function to generate the different day folders. The easiest thing would be if you would schedule the flow on the Monday.
After that you can loop through your array to create the new folder per item().
Below is an example.
Btw, I forgot about Friday, you might want to update the expression 😁
createArray(concat('Monday - ', utcNow('yyyy-MM-dd')), concat('Tuesday - ', addDays(utcNow(),1,'yyyy-MM-dd')), concat('Wednesday - ', addDays(utcNow(),2,'yyyy-MM-dd')), concat('Thursday - ', addDays(utcNow(),3,'yyyy-MM-dd')))
Hi @sudosaurus,
Use the expression editor and add:
item()
OK that worked well thanks.
How would I apply this to a sub folder of a document library?
For example I have a three sub folders named "Hub One", "Hub Two" and "Hub Three".
I would need the folders with their dates added to each one.
Hi @sudosaurus,
In that case you probably are looking at a nested loop.
Try something like below.
That worked great!
Once last thing (hopefully). Can you think of a way to order these folders Mon-Fri rather than Friday being at the top?
Only way I can think about doing it is appending numbers to the beginning of each day, ie. 1.Monday, 2.Tuesday, 3.Wednesday etc.
Could we change the expression for the WeeklyFolderArray so that the folders are formatted this way instead?
02-03-2022 - Wednesday
I think this would allow the day order to work better.
Hi @sudosaurus,
Sure, try this expression instead for the WeeklyFolderArray:
createArray(concat(utcNow('dd-MM-yyyy'), ' - Monday'), concat(addDays(utcNow(),1,'dd-MM-yyyy'), ' - Tuesday'), concat(addDays(utcNow(),2,'dd-MM-yyyy'), ' - Wednesday'), concat(addDays(utcNow(),3,'dd-MM-yyyy'), ' - Thursday'), concat(addDays(utcNow(),4,'dd-MM-yyyy'), ' - Friday'))
Thanks @Expiscornovus that worked well! 🙂
There was one other thing I wanted to run past you:
I've built this second flow to run the day before, which essentially will archive all the named folders to a sent folder.
Whilst the workflow does appear to run through and the folders do indeed get moved, the flow does error at the end with this:
The destination path cannot be the same as the source object itself.
clientRequestId: 491bf6c2-91e1-4406-8e9a-163f7977b87f
serviceRequestId: 491bf6c2-91e1-4406-8e9a-163f7977b87f
Is there any clear way to get around this without sticking the Sent folders in a folder outside of the "Skypark Hub" folder?
Thanks.
Hi @sudosaurus,
Like you already mentioned, this is because your Sent folder is also listed by your filter array. I would add another expression to your filter array to exclude it.
Btw, in the apply to each I would also use a Move folder action instead of a Move file and use the {FullPath} and {Path} properties to move the folders.
1. The same error for the Sent folder on my environment
2. The new expression for the Filter Array which you can add via advanced mode:
@and(not(equals(item()?['Title'], 'Sent')),equals(item()?['{IsFolder}'], true))
Hi @Expiscornovus ,
Where are you getting the {FullPath} and {Path} values from?
I tried using these in the expression editor and it said they were invalid.
Dynamic content only shows a SharePoint value named "Full Path" which I'm guessing isnt the same.
Hi @sudosaurus,
Those are coming from the body of your Filter Array action and originally from your Get files action. Display names of those properties are Full Path and Folder Path 😁
After saving your flow, navigating away from it and opening it again you should see that Microsoft also updated the icons and only shows the internal names.
Btw, I just noticed that the filter array doesn't exclude the already moved folders in Sent. So, that expression probably should be adjusted to something like below:
@and(and(not(equals(item()?['{Path}'], 'Weekly Folders/Hub Two/Sent/')),equals(item()?['{IsFolder}'], true)), not(equals(item()?['{Name}'], 'Sent')))
I just saw the last bit about the filter array maybe being incorrect.
When I run this flow I get this error message:
This is essentially my folder structure:
and the folders did manage to move from the Skypark Hub folder to the Sent folder.
However no other folders in the Tolvdaddon Hub or Worle Hub folders were moved.
Hi @sudosaurus,
I see you have a nested loop. In my example setup the archive flow only had three steps and no nesting.
Btw, in an earlier reply I only targeted the Get files to one specific hub folder, but now the limit entries is looking at the root.
Looking at your screenshot with the error it looks like our filter expression is still missing some things. I would have expected 15 items instead of 6 in the second loop. It is probably not excluding or including everything it should.
What I have done so far in my example is the following 6 criteria in the Filter Array:
- IsFolder is equal to true
- {Name} is not equal to Sent
- {Path} (Folder Path) is not equal to 'Weekly Folders/'
- {Path} (Folder Path) is not equal to 'Weekly Folders/Hub One/Sent/'
- {Path} (Folder Path) is not equal to 'Weekly Folders/Hub Two/Sent/'
- {Path} (Folder Path) is not equal to 'Weekly Folders/Hub Three/Sent/'
Putting that together in one expression would be this:
@and(and(and(and(and(not(equals(item()?['{Path}'], 'Weekly Folders/Hub Two/Sent/')),equals(item()?['{IsFolder}'], true)), not(equals(item()?['{Name}'], 'Sent'))), not(equals(item()?['{Path}'], 'Weekly Folders/'))),not(equals(item()?['{Path}'], 'Weekly Folders/Hub One/Sent/'))),not(equals(item()?['{Path}'], 'Weekly Folders/Hub Three/Sent/')))
So, I have updated my filter array with the above and changed Hub One, Hub Two and Hub Three to the folders at my end.
However I still get the same error as before.
I tried putting the "Move folder" action directly into the main "Apply to each" section however when I add the Full Path and Folder path values, it creates a new "Apply to each".
Hi @sudosaurus,
I would delete both apply to each actions and start fresh with that part of the move folder setup.
You can avoid this setup by using the exact order of steps from the gif I shared earlier. That should prevent it from going into a second nested loop 😁
1. Place a Move folder action directly under the Filter Array
2. Add the Full Path & Folder Path fields to the Move Folder action.
3. This should place the move file in the one (and only) apply to each loop
4. Replace the value field by the body from the Filter array action in the Select an output from previous steps field.
The flow is now successfully running however it's only doing it on one of the Hub folders.
The other two are not being processed.
@and(and(and(and(and(not(equals(item()?['{Path}'], 'Weekly Folders/Skypark Hub/Sent/')),equals(item()?['{IsFolder}'], true)), not(equals(item()?['{Name}'], 'Sent'))), not(equals(item()?['{Path}'], 'Weekly Folders/'))),not(equals(item()?['{Path}'], 'Weekly Folders/Tolvaddon Hub/Sent/'))),not(equals(item()?['{Path}'], 'Weekly Folders/Worle Hub/Sent/')))
Hi @sudosaurus,
I see you still have my library name (Weekly Folders) in your expression. In your setup it was Post, correct?
Try this instead:
@and(and(and(and(and(not(equals(item()?['{Path}'], 'Post/Skypark Hub/Sent/')),equals(item()?['{IsFolder}'], true)), not(equals(item()?['{Name}'], 'Sent'))), not(equals(item()?['{Path}'], 'Post/'))),not(equals(item()?['{Path}'], 'Post/Tolvaddon Hub/Sent/'))),not(equals(item()?['{Path}'], 'Post/Worle Hub/Sent/')))
Can you also share a screenshot of your Get files (properties only action)? I want to double check what configuration you are using over there.
HI @Expiscornovus ,
This is now working correctly.
I realised that I had the folders limited to /Post/Skypark Hub/ in my Get files action.
I've now changed this to /Post/ and the flow works correctly through all the folders.
Thanks 🙂
User | Count |
---|---|
85 | |
37 | |
23 | |
20 | |
16 |
User | Count |
---|---|
127 | |
49 | |
46 | |
27 | |
25 |