I am using MS Forms to collect data and Power Automate to send that data to an Excel Workbook. In the form I am collecting names as one of the fields. I would like the flow to convert their name to their initials and write the initials to Excel. There are only about six different names being input into the Form. Example: John Smith = JS, Amy Johnson = AJ. I tried using an IF expression but I cannot get that to work.
Thanks!
Proud to be a Flownaut!
Hi @rnunley
I have used the following flow with some expressions to solve what you want to achieve:
In this case, the field body('Get_response_details')?['r9723f014ffc146debd7eeca108b84ad0'] is the Forms field with the Name.
Here are the expressions used on each step:
1) Get the blank position between the first name and the last name:
I got it working. I used the "Switch" step in Power Automate along with a variable.
Hi,
That's great that you got it working! Remember to set as resolved for however helped you.
Regards,
Alex
-------
Community Support Team _ Alex Rezac
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
I tried your solution but I'm having issues. At the Apply to each I'm getting an error - The execution of template action 'Apply_to_each' failed: the result of the evaluation of 'foreach' expression 'split(variables('@{variables('inputName')}'),' '))' is of type 'String'. The result must be a valid array.
I followed your steps but I still cannot get it to work. Says I need an array not string.
You can use this much more elegantly:
Also this assumes that the name only consists of 2 words, sepparated by a single space, so its important to adhere to that format, or else youd have to make things dynamic
Thank you for taking the time to post. I'm not sure on how to use your solution. If you could be so kind what are the steps needed to make this work? I want to use the Displayname from the user.
Oh right, so this is a person/group field in SharePoint?
It would be good to know where the data is coming from that you want to use, and what kind of format it has
Yes, Its a sharepoint list that is a lookup for people only and displays the Name field.
Okay, so that will return to you an object. From this object, you then have to select the name. If you show the output of the action, you can find what you have to write in the expression to grab the name
Sorry , I guess i need some hand holding here. Still new to MSFlow. In my flow I initialize the variable inputName, Type Object with no value. If I set the variable it give an error needs to be a string not object. I'm not doing it right...Can you tell me what I need to do in laymans terms. 🙂
Sure, basically, there are different kinds of variables, such as string, integer, boolean, array, object, etc
PowerAutomate handles them differently, and some actions you can only do with some, not with others. For example, if you would have a string that holds '1', you can not use it to do math, because you would need it to be an integer.
Then there is object, which is basically a bunch of strings (lines of text) that belong together.
You are initializing a variable, and you are telling powerautomate that it will be an object. Then you are trying to set the variable, but you are using a string. So the flow is expecting that the variable will be set with an object, because you told it that this variable is an object. So when you then try to set it using a string, it will give an error.
In sharepoint, the people/group column is an object. In it is stuff like the mail address, and display name. IF this object is present and passed down your flow from some previous action, and you only want to get the display name, you have to tell the flow to do this. Just because sharepoint is showing you this displayname, does not mean that this is the information your flow is receiving.
In general, it is good to know what kind of data comes out of actions, so you can decide what you want to grab, how you want to grab it, or if you have to change the output of the action.
A good habit to develop is to check the output of an action in the run history
Great info. Thank you for that. I think you went beyond what I was asking but great info and helping me learn. I was hoping you could tell me what I need to do to convert the displayName to intitals - actual steps. I spent a few hours hacking away with no good results.
Alright, it is still not clear to me what the type is of the data that you will use to convert to initials.
If it comes from the form, its most likely a string.
If it comes from a sharepoint column thats defined as a person/group its an object.
Could you maybe show what you have so far?
It is from a SharePoint list. Person or Group - People Only - All Users. In MS Flow i want to take that First Name/Last and convert to a variable that contains only their initails. I will use that in a Send Email. I need to Flow steps to do this. Maybe soon I'll understand this more. For now I need to bug people like you to help me. 🙂
Yeah, so the info you get is an object, and holds other information such as the users email adress, etc.
The info you need is 'DisplayName', so to get that, you add ?['DisplayName'] after the name of the column, in an expression.
For example, if I would run a get item action, and would want the display name of the author, i would use:
User | Count |
---|---|
95 | |
47 | |
21 | |
19 | |
18 |
User | Count |
---|---|
137 | |
53 | |
42 | |
40 | |
28 |