I have tried to create a flow that triggers when an email with an attachment is received. It then downloads the attachment to OneDrive to a file named Employees.xlsx. This portion of the flow works perfectly. I need to read the data within the Excel file to post it to an SP list. Since Get Rows is deprecated and my file does not have a table I need to use the Create Table with Excel Online Business. I have tried this within one flow with a delay of 5 minutes between the Create File and the Create Table actions and receive the following error from the Create Table action:
I have tried to set this up as two flows with the first getting the attachment from the email and saving and the second triggered by a new file creation. The second then tries the Create Table with a delay of 5 minutes before hand with the same issue. I have scoured the forums and the internet and this seems like a common problem along with file locking issues. Is MS Flow just not mature enough yet to handle an operation of this sort? I have seen one implementation that utilizes the Graph but if I have to go that route I would pursue other options and eliminated the reliability issues of Flow altogether. Any direction would be appreciated. Thanks.
Solved! Go to Solution.
Ok, so the issue is creating a table in the existing Excel document in the first Flow... I have just updated my previous example which has worked fine:
The Flow run:
The resulting file:
So this should cover your requirements for Flow 1:
1. Save the file
2. Create the table
Set Flow 2 to be triggered by an update to the File (You may need to add logic for recursive events):
1. Get the Data
2. Add the data to the excel document
HTH
Jay
Hi @admiralman
Can you please share screen shots of your Flow configuration, specifically the 'Create File and 'Create Table' actions?
The following Flow worked fine for me... you'd just need to add configuration to do something with the data obtained from the Excel file:
I used the following expression to name the file:
HTH
Jay
-------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up
Thanks @Jay-Encodian ,
Here are the two flows side by side. As I mentioned before, I had everything in one flow and the same results. Remember, I am saving to OneDrive and I have to Create Table as it doesnt exist in the Attachment.
Hey @admiralman
Referring to my working example Flow.... this downloads the attachment from the email, obtains the data from the spreadsheet... you'd just need to add additional logic reference to what you wanted to do with each row of data from the spreadsheet.
Am I missing something extra in your requirements that this Flow doesn't cover?
Jay
The issue is not knowing HOW to do this, its the fact that it doesn't work. I can create the file but a table is required in order to get the rows in the Excel document. I try to Create Table I get the error I mentioned. The resource is there because I just created it but there is something causing an error. Why don't you try this on your side?
1. Get excel document that doesn't have a table from email and save it to a OneDrive.
2. Create an Excel table in the downloaded Excel document.
3. Get all rows from Excel table and load into SP List.
That is what I'm trying to accomplish...your example doesn't have those complications.
Please remember we are a community giving up our own time to help you.
Your requirements of adding data to the table were not clear, which is why the original example didn't include that example and I'd asked for you to clarify.
The steps still do not make sense to me and your Flow configuration looks confused against your requirements:
1. Get excel document that doesn't have a table from email and save it to a OneDrive - OK
2. Create an Excel table in the downloaded Excel document. - OK
3. Get all rows from Excel table and load into SP List. - When was data added to the table? I assume this should be the other way around?
May be of interest: https://powerusers.microsoft.com/t5/Building-Flows/Create-a-Worksheet-and-Table-in-Excel-and-then-ad...
I think you need to do the following:
Flow 1
Flow 2
Or for absolute clarity are you simply saying that you cannot find a way to add the table to the Excel document after you have added the file to OneDrive / SharePoint? If there's a file locking issue have you considered processing on Azure storage to work around?
Jay
The data already exists within the Excel document however there is not a Table (Named Range) defined on the Excel sheet. Without that, you can't use the "List rows present in a table" action of the Excel Online for Business connector.
Hopefully this will answer:
3. Get all rows from Excel table and load into SP List. - When was data added to the table? I assume this should be the other way around?
For your other suggestion..l have tried and the Create Table action fails with the same message.
Flow 1
Flow 2
Ok, so the issue is creating a table in the existing Excel document in the first Flow... I have just updated my previous example which has worked fine:
The Flow run:
The resulting file:
So this should cover your requirements for Flow 1:
1. Save the file
2. Create the table
Set Flow 2 to be triggered by an update to the File (You may need to add logic for recursive events):
1. Get the Data
2. Add the data to the excel document
HTH
Jay
@Jay-Encodian That seems to work and thank you. I was looking for a solution using OneDrive for Business but I accepted this all the same. Any idea if this could work in OneDrive instead of an SP library?
Good news
Ref OneDrive; I don’t foresee why it wouldn’t work but unless these files are personal document they should really be in SharePoint even if they are transient. It should be simple to test, just replace the SharePoint actions with the OneDrive equivalents
I hit a similar issue with the 404 Resource could not be found error message when trying to create a table on an existing XLSX file in OneDrive (for Business). Stumbled across this thread, and following the recommended Solution (saving to Sharepoint instead of OneDrive) was able to get it to work.
That then got me thinking about why it wasn't working in OneDrive. So I spent some time troubleshooting and figured it out.
In the "Excel Create Table" flow if you use the file name of like /MyFolder/filename.xlsx , the flow will FAIL with the 404 resource error.
Where as if you use the Dynamic Expression "Id" which is the unique identfier of the file (From the OneDrive Create File flow or from the OneDrive Get Metadata flow). Then it runs successfully! Seems calling Excel Create Table doesn't play nicely with the actual reference file name.
Thank u! Using file metadata ID solved my problem
rcheetah, you are a gift from heaven. I've been trying to get a string expression to work for days. When you select a file from the chooser on that action, it populates the chooser's textbox with a path to the file. But if you copy that very same path into an expression on the textbox, the flow fails. Infuriating.
Using the ID leads to success. The folks who made this action need a talking to when it comes to user expectations.
To add to this, how can you create a table if you dont know how many rows there are? Is there a way to get the total number of rows, to pass into the Table Create function?
I did a Create Table and specified a table range that I knew was larger than my data set. I then did a list rows present in table and passed that value to a filter array. I filtered the array based upon a column value being not
empty "empty of column1 is equal to bool false"
Clever idea @admiralman - so this will only add rows with data to the list and ignore empty rows? And could you clarify the "empty" filter - not finding it.
It is...wish I could take credit but I found the solution on here. Yes, it will filter them out.
How do i set the Table Range, while the file is coming from email and the rows are dynamic
For mycase an email with 2 csv attachment comes to a shared mailbox every week.
As suggested above by @admiralman , create the table with enough rows to accommodate the largest number possible, and then apply filter so only rows with data are passed to the list.
Hello there
I am doing the exercise but it does not work for me
Do you have any idea?
User | Count |
---|---|
89 | |
37 | |
26 | |
13 | |
12 |
User | Count |
---|---|
128 | |
53 | |
38 | |
26 | |
21 |