cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
mmuscatell
Regular Visitor

Read from CSV recently downloaded

Hello,

 

I am using power automate desktop, I have created a flow where I go to a website download information as a .csv. The name of this file changes each time it is downloaded so use the Get files in folder that looks for .csv and sorted by creation time. This produces the variable Files. The next step is Read from CSV file. I am telling the system to Load CSV table from File and give it the Files variable as I do not know what the name of the file will be each time it is downloaded. This is causing an error Parameter 'File path': Argument 'File path' must be 'File'. First off I have no idea what this error is trying to tell me and second is there another step I can add to tell it to use the most recently downloaded csv? I just don't know enough about this program and am looking to get started with my first flow. Any help would be greatly appreciated. Thank you kindly. Mike

 

Error.jpg

 

 

1 ACCEPTED SOLUTION

Accepted Solutions

Hey @mmuscatell ,

 

Glad we were able to get this worked out.  For everyone else, here are some of the steps we did.

 

Depending on the version you are currently running, if ".csv" is not pulling in csv files, try "*.csv".  The * acts as a wildcard.

 

If you try to read CSV to a datatable variable and then paste it into Excel, it will all paste in one column.  You will then have to use text to columns to separate it out to other columns.  If you have commas within the data itself, this will throw columns off (different rows ending up in different columns) and make a mess.

 

An alternative is to 'Launch Excel' for the csv file and use the Excel actions to copy the data you need:

 

MichaelAnnis_1-1640193434856.png

 

 

View solution in original post

14 REPLIES 14
Zave
Resolver I
Resolver I

Hello,

The variable %Files% is a list of files that will contain all the files retrieved from the "Get files in folder" action and not a single file. To access a specific item of that list (a file) you would need to either loop through the list, using the "For each" action, or you can specify which item of the list you want using an index.

For example, if you want the 1st item of the %Files% list, it would be %Files[0]%. This is a bit risky though because you can't be sure that the %Files% variable will always have at least one item.

As for how to get the most recently downloaded file, the "Get files in folder" action has an advanced section for sorting:

Zave_0-1639781129865.png

 

MichaelAnnis
Super User
Super User

Files is a list of Files.  You cannot read from a list of files, you have to specify which file.  So, if you want the first file (assuming you ordered in last modified descending), you want %Files[0]% which is the first file in the list, %Files[1]% is the second, and so on.

beat me by 30 seconds @Zave ...haha

I looks like I need to set up an index. How do I go about doing this? I tried the for each method you described and set up a loop. This is this run time error. I am trying to figure out what I can use to call that most recently downloaded .csv file. Any assistance would be greatly appreciated.Runtime Error Index.jpg

 

Thank you for the reply, I told the system to specify which file I would like it to look at using the %Files[0]% but got a new error. How should I proceed here? Any help is greatly appreciated.

Runtime Error.jpg

 

You have two options...for each or loop. 

 

For Each %CurrentItem% in %Files% will do whatever you put inside the 'For Each' and do that for each file.  Anytime you want to reference the current file you are on, you use %CurrentItem%.

 

Loop would be set up as:  Loop 0 to %Files.Count - 1% increment 1 as %LoopIndex%.  Then put your actions inside the loop.  Anytime you want to reference the specific file you are on, you use %Files[LoopIndex]%

Hello, Thank you again Michael. From one Mike to another I truly appreciate it. I know you would understand the unspeakable bond between Michaels. Anyways. I was able to apply both of those methods but now something else is happening when running my flows. It is not copy and pasting into the target excel document. I open it and don't see the data and check the date modified and see that it wasn't updated from when I clicked the flow. I tested these steps by themselves with these steps. Read from CSV->Launch Excel->Write to Excel Worksheet->And Save Excel it worked fine. Is there something else I am missing with my original flow?

For Each Method.pngLoop Method.png

Your CSVTable variable is a datatable variable type, correct?  I am not sure you can just write a datatable variable type as a whole into Excel A1 the way you are meaning to.  Are you simply trying to open a csv and resave it as Excel, then look here:

Launch Excel with your csv file and then Close Excel with the following:

MichaelAnnis_0-1640033907071.png

Note:  %CurrentItem.Directory% will save it right back where you got it from.  You can use any %FilePath% there and save it wherever you want.  %CurrentItem.NameWithoutExtenstion% will rename it the same as you want, just with the extension selected in 'Document Format' instead of .csv.

 

Good luck!

 

Thank you again for your assistance on this. Yes my CSV table variable is a datatable variable. I am not trying to change the file type. I am just downloading a CSV then wanting to copy its contents to a certain excel document and paste the information into a specific raw data tab to power the data models for an excel dashboard. I know I am close but getting lost in this new venture of automation.

MichaelAnnis
Super User
Super User

Okay, sorry for the confusion.  Set your CSV table to the clipboard text and then you can use "Paste cells to Excel worksheet" on A1. 

 

MichaelAnnis_0-1640039620207.png

 

 

Note: by default (i.e. pasted text is set to tab delimited), this will paste exactly how it is copied, so all the text for row 1 goes into A1, all the text for row 2 goes into A2, etc; like this:

 

MichaelAnnis_1-1640039726380.png

 

If you want it to delimitate by comma upon pasting (or after), you have to do a Text to columns either before or after, and you can set that up using the recorder.

 

We will get there.

 

 

Hello Michael,

Thank you again for your help. It still doesn't seem to be taking the contents from the csv and pasting it into the target excel workbook. I have attached an image of my flow below. Am I trying to do things that power automate is incapable of doing? I just don't know what step I need to add or remove to make this work correctly. The overview of this is to go to a website download a .csv file, The file name changes each time I download the file. Then open the most recently downloaded .csv file. Paste the contents into a certain tab on a master excel sheet that is powering a dashboard. I have added your most recently suggested steps as 13&15. Right now I have at least 4 different csv file reports that power this dashboard and I was looking to automate the process. But getting the system to just do one of the "data dumps" is trying. Any help is greatly appreciatedcurrent flow.png

 

.

Thanks,
Mike

No, it's capable; although, another option is VBA if everything you are trying to accomplish is in Excel.  I am going to PM you.

Hey @mmuscatell ,

 

Glad we were able to get this worked out.  For everyone else, here are some of the steps we did.

 

Depending on the version you are currently running, if ".csv" is not pulling in csv files, try "*.csv".  The * acts as a wildcard.

 

If you try to read CSV to a datatable variable and then paste it into Excel, it will all paste in one column.  You will then have to use text to columns to separate it out to other columns.  If you have commas within the data itself, this will throw columns off (different rows ending up in different columns) and make a mess.

 

An alternative is to 'Launch Excel' for the csv file and use the Excel actions to copy the data you need:

 

MichaelAnnis_1-1640193434856.png

 

 

I just wanted to thank you for posting such excellent work here in the discussion forums. I look forward to reading your posts, and giving me the opportunity to learn some thing new. I wanted to let you know that I appreciate your efforts!😀

Helpful resources

Announcements
Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

New Ideas Forum MPA.jpg

A new place to submit your Ideas for Power Automate

Announcing a new way to share your feedback with the Power Automate Team.

MPA Virtual Workshop Carousel 768x460.png

Register for a Free Workshop

Learn to digitize and optimize business processes and connect all your applications to share data in real time.

365 EduCon 768x460.png

Microsoft 365 EduCon

Join us for two optional days of workshops and a 3-day conference, you can choose from over 130 sessions in multiple tracks and 25 workshops.

Top Solution Authors
Top Kudoed Authors
Users online (3,361)