cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Emailing MS Form Responses

Hi all,

 

I have created a flow which emails the responses of an MS Form to the responder but also to a team mailbox in my org. It works fine, however, there is a lot of branching in the Form because it is quite complex. And I don't have Form Pro. I know that if a questions does not get answered then the field will just appear as blank in the body of the email.

 

Is there any way I can remove the question from the body of the email if all of the possible answer fields are blank? 

 

freddiejoseph1_0-1623421508231.png

 

 

For example above. If the responder doesn't answer the "Contract Title" question in the MS Form, how can I remove the "Contract Title" text from the body of the email in the flow?

 

I haven't yet found a way to do this.

 

Any help would be much appreciated.

 

Thanks,

 

Freddie

1 ACCEPTED SOLUTION

Accepted Solutions
Anonymous
Not applicable

I have managed to work out how to do this myself (after a LOT of trial and error). There is probably a nicer/more efficient way of doing this but here is how I achieved only including answered questions and their responses, collected from a form, in an email.

My flow steps are: When a new response is submitted > get response details > create item in SharePoint > send an email (V2). I also have some variables so I can convert some date answers. But you probably won't need these. My send an email currently looks like this in flow: 

freddiejoseph1_0-1623773126973.png

 

But it looks worse than it really is. I will explain the logic now.

The first 4 questions & answers you see at the top of the screenshot are mandatory, hence I haven't added any special logic to them. You would replace the SharePoint dynamic content/Output logic with your MS Form Answers whenever you see me use one here.

Rather than hard coding the question name, you wrap the question name in an 'if' statement. My first example of this would be 'ContractTitle' and the first if statement you see in the screenshot is: 

if(empty(outputs('Create_item')?['body/ContractTitle']), '', 'Contract Title: ') and what this logic does is sees whether there is an answer for the contract title question. If there is no answer submitted, it enters two single quote marks '' (which is effectively just a blank), if the user has answered that specific question then it enters 'Contract Title: '. After the first if, I then put the response to the question. Obviously if no answer is submitted then this will just show as blank anyway (which is the functionality we want). Then after the question response I have another if statement which is: 

if(empty(outputs('Create_item')?['body/ContractTitle']), '', '

<br>')

This looks up to see whether contract title has been answered. If there is no answer in that field then I have another double single quote mark ('') which again is just blank. If there is an answer for contract title I have a '<br>' which is HTML code for a carriage return (so it will drop down a line if an answer has been submitted).

 

I then start the exact same process all over again for the next question following the same logic. So without leaving any spaces or hitting the return button I just carry straight on with another if statement:

if(empty(outputs('Create_item')?['body/ContractOwnerName']), '', 'Contract Owner Name: ')

Followed by the answer field

Followed by: if(empty(outputs('Create_item')?['body/ContractOwnerName']), '', '

<br>')

 

Following that logic throughout means my email looks like this and only includes answered form questions 🙂

freddiejoseph1_1-1623773187303.png

 

Let me know if you want me to explain/help further. This has worked for me!

Thanks,

 

Freddie

 

View solution in original post

3 REPLIES 3
PrasadAthalye
Community Champion
Community Champion

You will have to write expression and do a null check something like below...

 

if(not(equals(outputs('Get_response_details')?['body/r6c6ad0ab931a4a26b0564e655ebd153c'], null)), outputs('Get_response_details')?['body/r6c6ad0ab931a4a26b0564e655ebd153c']  )
Please Like and Mark this as Answer if it resolves your Issue.

Power Automate Community
Anonymous
Not applicable

Hi Prasad,

 

Thanks for coming back to me. I have tried implementing something similar and I get the below error: 

freddiejoseph1_3-1623661025961.png

 

The formula I put in is: 

if(not(equals(outputs('Compose_Start_Date'), null)), 'Contract Start Date: ')
 
What I want to happen is, if the output from either a question in the form, or from a variable/compose function (which is based on the answer to a question in the form anyway) is blank/null, I want that question to disappear from the body of the email.
 
I also tried using the variable directly and I get the below error:
freddiejoseph1_2-1623660486966.png

With formula: 

if(not(equals(variables('varStartDate'), null)), 'Contract Start Date: ')
 
Any advice would be appreciated,
 
Thanks,
 
Freddie
Anonymous
Not applicable

I have managed to work out how to do this myself (after a LOT of trial and error). There is probably a nicer/more efficient way of doing this but here is how I achieved only including answered questions and their responses, collected from a form, in an email.

My flow steps are: When a new response is submitted > get response details > create item in SharePoint > send an email (V2). I also have some variables so I can convert some date answers. But you probably won't need these. My send an email currently looks like this in flow: 

freddiejoseph1_0-1623773126973.png

 

But it looks worse than it really is. I will explain the logic now.

The first 4 questions & answers you see at the top of the screenshot are mandatory, hence I haven't added any special logic to them. You would replace the SharePoint dynamic content/Output logic with your MS Form Answers whenever you see me use one here.

Rather than hard coding the question name, you wrap the question name in an 'if' statement. My first example of this would be 'ContractTitle' and the first if statement you see in the screenshot is: 

if(empty(outputs('Create_item')?['body/ContractTitle']), '', 'Contract Title: ') and what this logic does is sees whether there is an answer for the contract title question. If there is no answer submitted, it enters two single quote marks '' (which is effectively just a blank), if the user has answered that specific question then it enters 'Contract Title: '. After the first if, I then put the response to the question. Obviously if no answer is submitted then this will just show as blank anyway (which is the functionality we want). Then after the question response I have another if statement which is: 

if(empty(outputs('Create_item')?['body/ContractTitle']), '', '

<br>')

This looks up to see whether contract title has been answered. If there is no answer in that field then I have another double single quote mark ('') which again is just blank. If there is an answer for contract title I have a '<br>' which is HTML code for a carriage return (so it will drop down a line if an answer has been submitted).

 

I then start the exact same process all over again for the next question following the same logic. So without leaving any spaces or hitting the return button I just carry straight on with another if statement:

if(empty(outputs('Create_item')?['body/ContractOwnerName']), '', 'Contract Owner Name: ')

Followed by the answer field

Followed by: if(empty(outputs('Create_item')?['body/ContractOwnerName']), '', '

<br>')

 

Following that logic throughout means my email looks like this and only includes answered form questions 🙂

freddiejoseph1_1-1623773187303.png

 

Let me know if you want me to explain/help further. This has worked for me!

Thanks,

 

Freddie

 

Helpful resources

Announcements
 WHAT’S NEXT AT MICROSOFT IGNITE 2022

WHAT’S NEXT AT MICROSOFT IGNITE 2022

Explore the latest innovations, learn from product experts and partners, level up your skillset, and create connections from around the world.

Register for a Free Workshop.png

Register for a Free Workshop

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

Users online (1,541)