cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
graciegables
Frequent Visitor

Copy attachments from a SP document library to a SP list on the same site.

I'm using SharePoint online.  I need to copy ALL of the document library attachments into a SP list.  The list is already created and contains the same columns.  How do I do this using flow?  I want to be able to do this manually - one-time action.

9 REPLIES 9

Hopefully pretty simple, will update with an image in a second, @graciegables .

  1. Button flow
  2. SharePoint Get files (properties only) action on the library.
  3. Apply to each on the results of that and in each loop:
    1. Get the file
    2. Create an item in the destination list
    3. Add attachment to the item just made

That's it! 🙂

 

Here's an image to help you picture that, I've added a step so that the making of the item in the list, and the retrieval of the file data can happen at the same time.

simples.jpg

 

 

graciegables
Frequent Visitor

Thank you.  Will this work if the list is already created and the line items are already within the list?  I want to make sure that the attachments get attached to the correct line item.

If that's the case, @graciegables, then you just need to replace the Create an item with a call to get the right item instead.

Example Flow

Here's an example flow where I've put that in the Scope to get data. Also, a kind reminder that you can use whatever logic, and apply whatever details you need to, just change whatever you need to change. I don't know what data you have in your list (for example) so you might use a different method of matching files to list items:

00 - Basic Layout Of Flow.jpg

 

So your Get files (properties only) is still getting all the file details from the library (or subfolder therein).

 

Then for each file that's in the library/folder, the Apply to each is run on that.

Scope to get data

Within that Apply to each the first action is the Scope to get data:

01 - Scope to get data.jpg

First 3 Compose Actions

Each of the first three Compose actions there (fileIdentifier, fileId, and fileName) all take information from the current item in the Apply to each, which is from that Get files (properties only) action.

Get file metadata

Using the value of the first Compose (fileIdentifier) this retrieves some more data about the file. You can skip this step if you don't keep ContentType information. I have a column in my list for it, though.

fileContentType Compose action

Similarly, you can skip this if you don't use this information, but it takes the MediaType information from that Get file metadata action before it, and keeps it safe and snug.

Get items

This is the action you asked about in the other comment, and you should tap on the Show advanced options to show:

01a - Get items - Advanced.jpg

As you can see, that Filter Query is using a column from my list, in my case, it is the library ID number for the files. Therefore, if a file has already been placed on the list, I know that this number will be unique, so I am filtering by that number, and I am matching it against the current ID stored in the Compose made at the start of the Scope to get data (fileId).

 

If I clicked those arrows that are facing either way, it would read like this:

codeTBC

 

Switch on how many are found in Get items

Here is where you apply logic on what you do with the files in terms of attaching.

I'll update this in a second.

What you know for sure from the results of your filtered Get items action:

  1. If there are Zero results then the file need details AND attachment adding to the list.
  2. If there is One result then you need to check if it's attached, and if not attach it.
  3. If there are any others, then something is wrong, and you need to investigate.

So here's that broken down in a basic Switch action:

02 - Switch Basic.jpg

 

The None Branch

This branch makes entries in my list in case there's files that haven't been added:

02a - None Branch.jpg

 

 

 

The One Branch

This branch is likely to be the one you see most used, and is where you'll see the expression, which I mentioned in My Old Response:

outputs('Get_items')?['body/value'][0]?['ID']​
02b - Condition Basic.jpg

 

Here you can see that the expression is actually used twice in that Yes branch, with the no branch purely there for show as nothing needs to happen if the file is on the list and attached already. If, like me, you're deleting the files, then you could put a delete action in the no branch.

Yes branch

02b1 - Condition Yes.jpg

That's all she wrote! The other branch is just an email alert. 🙂 

 

My Old Response

I would assume that the items in the list have unique identifiers for the library items, so it shouldn't be too hard to either:

  1. Perform the following inside the Apply to each action:
    1. Add a Get items with an OData filter to limit the response to just the item you need.
    2. In the Add attachment action, when building the ID field make an expression and use this to get the ID from it:

      outputs('Get_items')?['body/value'][0]?['ID']​

      That [0] pulls the first item from the array, giving you the data of the only item in your lovely filtered Get items. 😊

  2. Or if when you made this list you also added a column to the library with the list ID, then you can iterate through each file, and pull the list ID from that column of information on the file. 👍

---

An example of data that you might have in the SharePoint list about the files is perhaps the file Id in a column called "File_Id". In which case your ODATA Filter would be:

File_Id eq 'EXPRESSION'

Where EXPRESSION is the following expression:

 

 

 

items('Apply_to_each')?['ID']

 

 

 

 

graciegables
Frequent Visitor

When you say "unique identifiers", do you mean an ID column?  If yes, that is correct.  I'm confused by the OData filter - not sure what that means.  Also, I need this flow to move ALL of the attachments at the same time - not individually.  Here is a screenshot of what I've set up so far, but it has an error and I don't understand it.

 

graciegables_0-1653597451937.png

 

Sorry, the Get items runs inside the Apply to each, I'll amend that to be more clear. Your Id field is referencing something that doesn't exist as you haven't performed the Get items on the SharePoint list.

 

An ODATA filter is in the advanced options for limiting the items in your list search.

 

So my list has a number column called HowManyHours, if I only want hours above 100, then I could use an ODATA filter on that list of:

ODATA.jpg

If I tap those two-way arrows next to Filter Query it shows it in the ODATA format, which is:

 

 

HowManyHours ge '100'

Hi, the screen shot you have above is reference a LIST.  I need to copy attachments from a DOCUMENT LIBRARY.  Is there a "Get Items" for that, or does it only work with Lists?

Yes, @graciegables it is a list items pull.

 

Again, that runs inside the Apply to each, your Get files (properties only) is what the Apply to each runs on.

 

Also, there's no need to shout, mate, I can understand from normal words. 😉

 

I'll try to spend a few minutes putting a visual demonstration inside the message you're talking about.

Hi , were you able to get this to work? if yes can you share the steps.

dghavban
Frequent Visitor

Hi, Where you able to get this to work? if yes can you share the steps,

 

Thanks

 

Regards,

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

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!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

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  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

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.    

Updates to Transitions in the Power Platform Communities

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

Users online (900)