With the help from @v-wenjuan-msft, I've built a flow which identifies the number of a new file added or modified towards an existing Excel sheet. It creates a new file based on information from the original document and from a row in the spreadsheet. However, I'm unable to make it go through all the rows where I have this identified number - it only does the first one. So there's something wrong with the logic somewhere.
Note; I know it's messy, but I'm more interested in the function than the beauty at this stage.
Here's the process as it is today:
Codes:
Split: Split(triggerOutputs()?['body/{Name}'],'_')[0]
Outputs('compose')
Body('Filter_Array*
variables('ListRows')
variables('ListRows')
identifier - triggerOutputs()?['body/{Identifier}']
last - last(split(triggerOutputs()?['body/{FilenameWithExtension}'],'.'))
Hi @v-wenjuan-msft , and thank you for your continued support!
Here's the whole thing, with the expressions:
Compose expression:
Value: outputs('ListRows')?['body/value']
itemnumber: item()?['Itemnumber']
Outputs: outputs('Compose')
length: length(body('Filter_array_3')
body('Filter_array_3')
triggerOutputs()?['body/{Identifier}']
last(split(triggerOutputs()?['body/{FilenameWithExtension}'],'.'))
concat(body('Filter_array_3')[0]['Customer'],'_',body('Filter_array_3')[0]['Item Name'],'.',outputs('Compose_2'))
outputs('Compose_3')
triggerOutputs()?['body']
The following is the final step which also adds metadata to the newly created file. I have tried the operation with and without this step, but it doesn't matter whether it's there or not:
outputs('ListRows')?['body/value']
Would you please spread every action and take screenshots? so that I can check parameters/functions you insert in them and try to figure out what's going on.
Hi @v-wenjuan-msft ,
I think i might have a very elementary fault here which I cannot figure out.
It seems to cycle the same row over again. So it takes C column in the example above and just runs that 47 times
Hi,
There're 47 loop here which means there should be 47 rows found from Excel and there will be 47 copies created. Would you please click "Next" to check their processes?
One more tips, you can set concurrent control for the "Apply to each 2" to 50 so that it will handle with 50 loop at the same time.
Community Support Team _ Wenjuan Zou
If this post helps, then please consider Accept it as the solution to help the other members find it.
Hi @v-wenjuan-msft ,
it doesn't change anything unfortunately. It still only creates a file based on the first row it finds.
It doesn't give any error message either, it just completes "successfully". All the outputs and inputs also gives the right data (All rows) but it doesn't process all of them.
Hi @BkkBound ,
Thanks for your table. That's clear!
Here's the function I used:
concat(item()?['A'],'-',item()?['B'],'.',outputs('Compose_3'))
Community Support Team _ Wenjuan Zou
If this post helps, then please consider Accept it as the solution to help the other members find it.
Hi @v-wenjuan-msft ,
you're correct.
1. A PDF is uploaded to a Sharepoint folder, this PDF have got a filename consisting of <A><B>.pdf
Field A is extracted from the filename and compared to a Excel sheet, this field could occur multiple times in the Excel sheet and I want to create one PDF file per row.
So I have this file coming in:
123456_SomeName.pdf
The Excel sheet have this data:
A | B | C | D | |
1 | Item | Name | Identifier | ValueA |
2 | 123456 | SomeName | 651321 | Italy |
3 | 121748 | SomeName | 651984 | France |
4 | 123456 | SomeOtherName | 651489 | Germany |
5 | 123456 | SomeName | 651123 | Poland |
So I want to take the original PDF coming in and create copies with filename based on the values in the excel, so for this example I want to take the info from row 2,4 and 5 and create a file per individual row.
Now this is working, but it only takes the first row.
I have also tried adding the filter array, but no luck still.
Hi @BkkBound ,
Sorry that I'm a little bit confused about your new request.
Do you mean you have retrieved a "identified number" from the SharePoint filename, and you have several rows in Excel sheet with this number as "Itemnumber" and you want to use an action to get them all, but it only return the first row it get? Please kindly correct me if I made any mistake.
If that's the case, the issue is due to this action:
To use this action to search for a row, you have to ensure the key value is unique in the key column. Otherwise, if there are several rows match your search condition, it will return the first one.
You should use "Filter array" to retrieve the rows you want from "Listrows" action:
Community Support Team _ Wenjuan Zou
If this post helps, then please consider Accept it as the solution to help the other members find it.
Michael E. Gernaey
566
Super User 2025 Season 1
David_MA
516
Super User 2025 Season 1
stampcoin
492