cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Automatically delete files in Document Library after X days

Hi,

 

How can i create a flow so that everytime a file is created/added in a SharePoint Document Library, that the particular file than will be deleted in lets say in "7 days".

 

The point is that the no files older than 7 days will stay in the Document Library.

 

Thanks...

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
gamoraes
Memorable Member
Memorable Member

Hi @Anonymous, first of all thanks for post.

 

i think the best way to do this is using a schedule to get all documents, look at example below:

flow1.png

 

Detaileds Steps:

 

1 - Use an schedule trigger with 1 day interval

2 - Use the action - SharePoint - Get file properties only

      Put your Site and Document Libary name

3- Use an foreach and put values as result

4- Use an advanced condiction to verify if the actual date is greater than document created date + 7

      This is the condiction code, in red are the days to add, change if you need:

      

@greater(utcNow('yyyyMMdd'), formatDateTime(adddays(item()?['Created'],7),'yyyyMMdd'))

 

5- If the condiction is yes, the document is older than 7 days

6- Use the action - SharePoint - Delete Item

 

Hope this helps.

 

Best Regards,

 

Gustavo Moraes


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


View solution in original post

23 REPLIES 23
gamoraes
Memorable Member
Memorable Member

Hi @Anonymous, first of all thanks for post.

 

i think the best way to do this is using a schedule to get all documents, look at example below:

flow1.png

 

Detaileds Steps:

 

1 - Use an schedule trigger with 1 day interval

2 - Use the action - SharePoint - Get file properties only

      Put your Site and Document Libary name

3- Use an foreach and put values as result

4- Use an advanced condiction to verify if the actual date is greater than document created date + 7

      This is the condiction code, in red are the days to add, change if you need:

      

@greater(utcNow('yyyyMMdd'), formatDateTime(adddays(item()?['Created'],7),'yyyyMMdd'))

 

5- If the condiction is yes, the document is older than 7 days

6- Use the action - SharePoint - Delete Item

 

Hope this helps.

 

Best Regards,

 

Gustavo Moraes


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


View solution in original post

Anonymous
Not applicable

Hi Gustavo,

 

Thank you very much for your reply. I will try this out later

What if you want to change from 7 days to lets say 60 minutes?

 

Thanks again

Simple change adddays to addminutes, you can use other functions, to see docs look here inside Date Functions


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


v-xida-msft
Community Support
Community Support

Hi @adamk,

 

I agree with @gamoraes’s thought, I have made a test on my side and the flow works well.15.JPG

The flow works successfully as below:16.JPG

If you have any further questions, please feel free to reply me here.

 

Bets regards,

Kris

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

For the flow when you get to the Action for "SharePoint - Delete Items " It is asking me for the list and for the id. Am I doing something wrong? I am wanting to auto delete all files older than 21 days that were added to the Documents folder. 

@ThomasAzar

I had a similar issue.

 

First, I created a new library in the workspace just for auto deletion.

 

Delete Item did not work for me. Instead, I had to use Sharepoint: Delete File action.  

 

There are two fields for this action: 

  • Site Address: (name of the workspace group)
  • File Identifier: (dynamic field called Identifier. Identifier contains both the Library name AND the actual file name for each file.

Fred

 

Anonymous
Not applicable

Hi @gamoraes,

 

In your condition statement, @greater(utcNow('yyyyMMdd'), formatDateTime(adddays(item()?['Created'],1),'yyyyMMdd'))  -  is the "utcNow" telling MS Flow to look for the # of specified days based on when the file was created in SharePoint?

 

In my particular case, I'm not actually creating a new file within SharePoint, but rather creating a word doc on my computer, then uploading it into SharePoint documents library.  Will your condition statement treat the file in the same way as the upload date/time being the same as created date/time?  I hope my question makes sense.

 

Thanks!

Anonymous
Not applicable

Hi @v-xida-msft,

 

I also created this same flow and followed the instructions given, yet my flow fails every time.  I'm not sure where I'm going wrong, any assistance would be appreciated!

 

Aso, would you please tell me if my understanding of this particular flow is correct?

 

Interval - 1 Day : This flow will "trigger" every day or once a day

Condition - Each time this flow is triggered, it is going to check if the designated file (based on filename) is older than X number of days, in this case, older than 1 day.

 

Thank you!!

 

flow.JPG

 

HI @Anonymous.

 

I'll do an example for you.

 

Regards,

 

Gustavo Moraes


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


Is there any way to do this for a specific OneDrive folder? I'd like to have a flow where my Downloads folder in OneDrive automatically deletes content older than a week.

ufc205
Frequent Visitor

Hey Guys,

 

I copied this flow and had it working for a document library.

 

However I am trying to recreate this flow again on a different site and it runs sucessfully but is not deleting anything.

 

Ultimately I want to to delete any files older than 2 years in age (Date Created/Added/Uploaded to Site)

 

I am just trying to get it to delete after 1 day to verify it works before I change it to 730 days

 

I am using this:

@equals(formatDateTime(item()?['Created'], 'MM/dd/yyyy'), formatDateTime(addDays(utcNow(), -1), 'MM/dd/yyyy'))

 

Here is how my flow is layed out currently:

https://imgur.com/a/17gFUT3

 

https://imgur.com/a/46ZZaAU

 

Does it matter if the folder CGI which I am looking to delete the files in, is inside another folder?

 

company.sharepoint.com/shared documents/folder1/CGI

 

Any ideas why its not deleting the files in the CGI folder? They were all created/uploaded over a week ago.

 

Like I mentioned I have it working no issues on my other site but this one it doesn't seem to work.

 Thanks.

 

 

ITDave
Frequent Visitor

Hi @gamoraes

 

I am also trying to create a flow to delete files older than 1 hour created in a sharepoint folder.

 

I have set up a recurrence trigger for every hour to Get Files (Properties Only) from the documents library on a Team Site.

I have added Apply to each - Value and the Condition -  @greater(utcNow('yyyyMMdd'), formatDateTime(addminutes(item()?['Created'],60),'yyyyMMdd'))

First problem - Here I am asked 'is equal to' and 'Choose a value' ??

 

Finally I have added If Yes - Delete Item - Site Address. Now it askes for Sharepoint List Name?? There is nothing in the drop down but it wont complete unless I add a 'List Name'??

 

Help Obi Wan, you are my only hope....

 
gamoraes
Memorable Member
Memorable Member

Hi @ITDave


The new update in MS Flow removed advanced expression, but it's easy to resolve this.

 

First - Your condition show be like this condicao.jpgInside, the expressions are:

condicao 1.jpg

condicao 2.jpg

 

Second - I don't know why but sometimes flow don't show some lists and libraries, but you can select 'Add custom value' and put the actual name of Library.

 

 

 


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


ITDave
Frequent Visitor

Hi @gamoraes

 

I have used the expressions as you advised. This seems to work but I am unsure of the format for the custom value for the 'List Name'.

 

I have tried:

/shared Documents/general/email messages/

\shared Documents\general\email messages\

 

and numerous different combinations of the above.

 

Each time I try and run the flow I get an error:

Outputs: Status Code 404

Message: List not found

 

Any ideas?

 

ITDave

 

gamoraes
Memorable Member
Memorable Member

Hi @ITDave if possible can you open a new Thread?

 

The name of list is 'shared Documents', in your flow you will need to verify the folder of file, because general\email messages\ is a subfolder.

 

You can create too a new Document Libary like 'Email Messages' if possible


Did I answer your question? Mark my post as a solution!

Gustavo Moraes, o astronauta brasileiro do Flow!


Kev-D
Regular Visitor

I keep getting Unitedkingdom.flow.microsoft.com says "The Expression is invalid"  

 

@greater(utcNow('yyyyMMdd'), formatDateTime(adddays(item()?['Created'],1),'yyyyMMdd'))

 

Can anyone spot what I am doing wrong please?

 

Many thanks

KevD

JBlaiser
Microsoft
Microsoft

Quick bump on this thread as some updates have made the solution obsolete. I was able to successfully put together a flow that accomplishes the following with details below:

 

A 30-day timed delete feature based on the day/time a file was uploaded to a sharepoint folder. You can add "Created" column to your folder library to view the date a file was added and after a specified period of time (I need mine to be 30 days due to compliance) that file will be deleted. This can be modified to pull at any minute/hour/day/month period and delete after any minute/hour/day/month period. I have mine set to pull every day and delete a file after 30 days.

 

Screenshot 2020-12-17 155806.png

 

Screenshot 2020-12-17 160755.png

 

Where the first part of the condition = utcNow('g')

and the second part of the condition = 

formatDateTime(addDays(item()?['Created'],30),'g')
 
Important thing here is the 'g' represents what time format is used in the expressions. So if you are wanting to use a formula that includes minutes or seconds, this part of the expression MUST have a time format that includes minutes or seconds (yyyyMMdd does NOT include time, and will NOT work with +minutes in this expression). If you need to add minutes instead of days change "addDays" to "addMinutes" and "30" to the amount of minutes you'd like to delete after.
 
You can decide on a time format from the expressions listed here: formatDateTime to Format Dates with Power Automate (sharepains.com)
 
Time format "g" from that site shows:

“g”

General date/time pattern (short time).

More information: The General Date Short Time (“g”) Format Specifier.

2009-06-15T13:45:30 -> 6/15/2009 1:45 PM (en-US)

2009-06-15T13:45:30 -> 15/06/2009 13:45 (es-ES)

2009-06-15T13:45:30 -> 2009/6/15 13:45 (zh-CN)

Important distinction in the flow I've created vs solution is mine kept failing with "ID" as the identifier to delete the file until I changed it to "Identifier". I believe because I am deleting a file from a folder instead of an item from a list.

is this:

 

formatDateTime(addDays(item()?['Created'],30),'g')

 

pulling the number of days in the DateTime field? 

This is great information, thank you! 

 

I seem to be getting stuck when I go to test. I think I modeled everything correctly; no Flow Checker errors until I go to test: 

lundboej_0-1613141972550.pnglundboej_1-1613141992024.pnglundboej_2-1613142006122.png

 

Condition is 

utcNow('g') is greater than 

formatDateTime(addDays(item()?['Created'],1),'g')
 
Any thoughts? thanks! 

Helpful resources

Announcements
MPA_User Group Leader_768x460.jpg

Manage your user group events

Check out the News & Announcements to learn more.

V3_PVA CAmpaign Carousel.png

Community Challenge - Giveaways!

Participate in the Power Virtual Agents Community Challenge

Carousel 2021 Release Wave 2 Plan 768x460.jpg

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

PowerPlatform 768x460.png

Microsoft Learn

Check out our new Discover Your Career Path blog post series and get all the details.

Users online (889)