Skip to main content
Community site session details

Community site session details

Session Id : rWC1zRpW9cgh45dTDk2FAy
Power Automate - Building Flows
Unanswered

Extracting all responses from MS Forms, not just on submit

Like (2) ShareShare
ReportReport
Posted on 20 Jun 2024 23:29:10 by 30

Ok, upfront, we made a tiny mistake recently when we decommissioned a SharePoint connected to MS Teams as we'll moving it to a Site SharePoint.  We wanted to stop all users going to the old files saved under that site so we removed access.  Problem was, after the fact, we realised that there were some MS Forms that where owned by that Group owner.  

 

Now, the MS Forms still worked, but we could no longer open the Excel to extract the answers in bulk.  Sure you could still see the answers against each question in the response section, and the flow was still working as that Group Owner did still exist, it was just the removal of all access except admins that meant no one could download the responses anymore.

 

I couldn't find a flow to extract, so I built one.  Just putting it here in case anyone else runs into this same issue, or wants to bulk extract MS Forms responses for other reasons.  In this example, we take all the responses from an MS Form and put it into a SharePoint list that I created to mimic the questions and responses in the Form:

 

engs_0-1718921540268.png

Here is a brief explanation of the steps:

1. Manually trigger a flow - Here we have an entry parameter for the number of records that is in the form.  This helps the flow know when to stop extracting:

 

engs_1-1718921622321.png

2. The flow then initializes an integer variable that's left blank so we can fill it incrementally as we cycle through each record we are extracting:

engs_2-1718921683396.png

3. We then set the variable so it extracts the first row - this is using the Row ID that's in MS Forms and is inherent in the setup of a Form, so unless you have some really obscure situation, you should have a row that starts at 1:

engs_3-1718921775610.png

4. In the above, we set the "start" number, and now we are setting the end number to use later.  This is just grabbing the number you entered in Step 1 as the number of record (responses) on the form.  This means that it is held as an integer variable, same as above:

engs_4-1718921882345.png

5. We then add a "Do Until" which is where we compare the current record number (Step 2) to the variable held as the maximum number of records (Step 4).  This is used as a check point during the increment variable we'll use later in this flow, so that it knows when to stop the "apply all" that is natively part of the "Do Until" condition.  Note 1: Didn't play around with timeout so can't comment on that, but any notes from others on that would be useful for larger runs.  Note 2: I didn't try doing a direct compare of the Record Count variable to the response entered into Step 1, so potentially you could try that and cut out Step 4 if it works - food for thought:

engs_5-1718922067467.png

 

6. Now you are going to use the Get Response Details from MS Forms, and in Parameters you'll need to select the form.  If you still have direct access to the form in the drop down then great!  But if you did the same thing we did, the form is unlikely to be in your drop downs.  So just go to the address bar on the form, and select the GUID of the Form and copy it.  Then select "Enter Custom Value" which is the last selection on the Parameters list in the Form ID field, and that allows you to paste the GUID (Fake GUID use in this screenshot - you only have a few seconds to get a screenshot using a fake ID before it errors on you, so just acknowledging the art form of faking screenshots).  Lastly, use the Record Count Variable (Step 2) as the Response ID:

engs_6-1718922738045.png

 

7. As I said at the beginning, I chose to put this into a SharePoint List that I had setup to match the answers, including choice fields. Select the SharePoint Site and SharePoint List to use and click "Show All" in advanced parameters once selected.  This is where you match the form answers to the SharePoint list.  Any Choice fields, you'll need to select the last "Enter Custom Value" and then you'll have the usual little lightening icon come up to give you the matching choices to the Forms answers.

Note: so many people leave spaces at the end of their choice fields.  These are really hard to bring into SharePoint lists because it's hard to create a choice and leave a space after it.  I chose to clean-up data in the SharePoint List after I had bought the data across as this bulk extract was a once-off event.

engs_7-1718923326456.png

 

8. Lastly, in the "do until" you add the Increment variable to set the Record Count variable after it writes a row.  This increases it by 1 each time so you get all the records.  

engs_8-1718923626460.png

 

Now you can save it, switch on the flow, and click Run on the flow to start it off. Fingers crossed!

 

A few things to note as well:

- I only tested this for a few hundred records, so don't know limits.  If you are worried or you have done the research on the limits and know the number, then maybe just set that upper number in the pop-up at the start.  And then go back to edit the flow afterwards and make Step 3 first number after the last record in your extract, and run it again with the next highest number in your batch (e.g. For 1000 records, you run it with manually setting the number at 500, once complete, edit and change step 3 to 501 and run it again with the upper limit set to 1000 this time - haven't tested this though).

- If you have a multiselect, then you can add each of these as a Select after the Get response details.  Just add a function as per the mouse-over info in the "From" field (the bit covered over is just the GUID of the question in the form - I got this by just running the flow for 1 record before adding the select, and then looking at the history of that flow run to find my multi-select field and take the GUID from that run history to use in the select and then deleting the record from my list).  In the Map, you only need 1 line that has Value in the left hand side, and a function of just item() in the right-hand side as per the screenshot (screenshot taken from another flow... just so you know why it looks slightly different).

 

engs_9-1718925844662.png

 

Hope all this helps someone else!  I'm just a dabbler myself, so any better ways of doing it, please post in the response.

  • TP-08101943-0 Profile Picture
    3 on 08 Oct 2024 at 19:45:14
    Extracting all responses from MS Forms, not just on submit
    Clever solution. I can use it to update my lists when there is a glitch in my flow running and miss form submissions.
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Paul Stork – Community Spotlight

We are honored to recognize Paul Stork as our July 2025 Community…

Congratulations to the June Top 10 Community Leaders!

These are the community rock stars!

Announcing the Engage with the Community forum!

This forum is your space to connect, share, and grow!

Leaderboard > Power Automate

#1
Michael E. Gernaey Profile Picture

Michael E. Gernaey 497 Super User 2025 Season 2

#2
David_MA Profile Picture

David_MA 436 Super User 2025 Season 2

#3
Riyaz_riz11 Profile Picture

Riyaz_riz11 244 Super User 2025 Season 2

Loading started