Forum Discussion
Get attachment link from SP List Attachment column
Hello!
I have a SharePoint list that has files attached in the Attachments column.
I want to create a visual table in my Power BI that shows the attachment link for each item in this list, so that the user can click on the link and be redirected to the file if they want to download it. How can I get the attachment link from a SharePoint list and use it in Power BI?
- Anonymous1 year ago
Hi nok , hello MattiaFratello, thank you for your prompt reply!
Create a new blank query and paste the following M code to meet your requirement:
let SharePointSiteURL = "YourSharePointSiteUrl", SharePointTenant="https://Yourtenantname.sharepoint.com", API_URL = SharePointSiteURL & "/_api/web/lists/getbytitle('YourListName')/items?$expand=AttachmentFiles", Source = Json.Document(Web.Contents(API_URL, [Headers=[#"Accept"="application/json;odata=nometadata"]])), ListItems = Source[value], ExpandedItems = Table.ExpandRecordColumn(Table.FromList(ListItems, Splitter.SplitByNothing()), "Column1", {"ID", "Title", "AttachmentFiles"}), ExpandedAttachments = Table.ExpandListColumn(ExpandedItems, "AttachmentFiles"), AttachmentUrls = Table.ExpandRecordColumn(ExpandedAttachments, "AttachmentFiles", {"ServerRelativeUrl"}), FinalTable = Table.AddColumn(AttachmentUrls, "AttachmentLink", each SharePointTenant & [ServerRelativeUrl], type text), ResultTable = Table.SelectColumns(FinalTable, {"ID", "Title", "AttachmentLink"}) in ResultTableRemember to cahnge the
siteurl,tenantname, andlistnameto your specific valuesAfter that, format the text in the column as a web URL:
My sample test for your reference:
Best regards,
Joyce
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
2 Replies
- AnonymousNot applicable
Hi nok , hello MattiaFratello, thank you for your prompt reply!
Create a new blank query and paste the following M code to meet your requirement:
let SharePointSiteURL = "YourSharePointSiteUrl", SharePointTenant="https://Yourtenantname.sharepoint.com", API_URL = SharePointSiteURL & "/_api/web/lists/getbytitle('YourListName')/items?$expand=AttachmentFiles", Source = Json.Document(Web.Contents(API_URL, [Headers=[#"Accept"="application/json;odata=nometadata"]])), ListItems = Source[value], ExpandedItems = Table.ExpandRecordColumn(Table.FromList(ListItems, Splitter.SplitByNothing()), "Column1", {"ID", "Title", "AttachmentFiles"}), ExpandedAttachments = Table.ExpandListColumn(ExpandedItems, "AttachmentFiles"), AttachmentUrls = Table.ExpandRecordColumn(ExpandedAttachments, "AttachmentFiles", {"ServerRelativeUrl"}), FinalTable = Table.AddColumn(AttachmentUrls, "AttachmentLink", each SharePointTenant & [ServerRelativeUrl], type text), ResultTable = Table.SelectColumns(FinalTable, {"ID", "Title", "AttachmentLink"}) in ResultTableRemember to cahnge the
siteurl,tenantname, andlistnameto your specific valuesAfter that, format the text in the column as a web URL:
My sample test for your reference:
Best regards,
Joyce
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- MattiaFratello
Super User
Hi nok, you can connect to your sharepoint list using
New Source -> Others -> SharePoint Online List
Use the truncated URL of your SP https://yoursharepointname.sharepoint.com/sites/xxxClick then on Table under the column Items for the correct SP list you want to import