SOLVED

Report on skills added per user

Iron Contributor

Hi all,

 

Does anyone know of a script or something that can make a report of all the skills people have added specifically to the skills and expertise field in Delve per user?  There HAS to be a way to do this, even if it is a PS script.

 

Shawn  

3 Replies

Hi Shawn (@shawn_fielding) this should be possible with a flow in Power Automate as we can access the skills in Delve via the Office 365 Users Get User Profile (v2) action. It would need the list of staff to be in a spreadsheet or SharePoint list with the email address as the column (or one of them). The flow would then loop through the list and add the name and skills back to another spreadsheet table or a list. I'll look at the steps that would be necessary later today and post the steps as soon as possible.

 

Rob
Los Gallardos
Microsoft Power Automate Community Super User

@RobElliott Thank you for this and in advance for the follow up.  This information would really help!

best response confirmed by shawn_fielding (Iron Contributor)
Solution

@shawn_fielding yes this does work with a flow in Power Automate:

0-spreadsheet-result.png

 

The list of staff is in a spreadsheet with a column for the email address. The column header in this case is called Email. The spreadsheet must be formatted as a table.

 

You should also create in advance the table spreadsheet and table that the results will go into as in the image above.

 

I've triggered the flow manually and then initialised an array variable to hold the skills of each person.

 

The next action is to add an Excel List rows present in a table in the spreadsheet. 

 

1-trigger-var-listRows.png

 

Next, add an Apply to each control, select value from the dynamic content box and in the apply to each add an Office 365 Users Get user profile (v2) action and for the user select Email from the dynamic content box.

 

So that Apply to each will loop through each email address. But we then need to add another Apply to each to get the skills attached to each email address and append them to the variable created at the top of the flow. In this second apply to each we've selected Skills as the output from previous steps and in the append to array variable action select Skills Item:

 

2-apply-append.png

 

Next we need to add an action in the first Apply to each. Make sure you are not just adding it immediately below the append to array variable but are outside the second apply to each.

 

The action we need to add is a Compose control and the input of that is the array variable. The reason we're doing that is so that the array variable is available in the follow-on actions.

 

The next action is an Excel Add a row into a table. In this case I've added their fullname from the original spreadsheet and then for the skills column select the Outputs of the Compose action above from the dynamic content.

 

3a-dynamicContent.png

 

The final action - still within the first apply to each - is to add a Set variable control to set the array variable back to null before the flow looks at the next email address in the original spreadsheet. From the dynamic content you select the Expression tab and type null then click OK. 

 

3-compose-addRow-set.png

 

To add the null expression, don't just type null into the Value field as that won't work but select it from the Expressions tab of the dynamic content.

 

4-nullExpression.png

 

If you have a very large list of staff it will take some time to populate the new spreadsheet. It took over 10 minutes to complete a staff list of about 260 people. But it's quite fun to watch it happening in real time as shown below and hopefully it will help as you try to make sure people populate the skills part of Delve.

 

FlowSkills.gif

 

 

Come back with any questions about this.

 

Rob
Los Gallardos
Microsoft Power Automate Community Super User

1 best response

Accepted Solutions
best response confirmed by shawn_fielding (Iron Contributor)
Solution

@shawn_fielding yes this does work with a flow in Power Automate:

0-spreadsheet-result.png

 

The list of staff is in a spreadsheet with a column for the email address. The column header in this case is called Email. The spreadsheet must be formatted as a table.

 

You should also create in advance the table spreadsheet and table that the results will go into as in the image above.

 

I've triggered the flow manually and then initialised an array variable to hold the skills of each person.

 

The next action is to add an Excel List rows present in a table in the spreadsheet. 

 

1-trigger-var-listRows.png

 

Next, add an Apply to each control, select value from the dynamic content box and in the apply to each add an Office 365 Users Get user profile (v2) action and for the user select Email from the dynamic content box.

 

So that Apply to each will loop through each email address. But we then need to add another Apply to each to get the skills attached to each email address and append them to the variable created at the top of the flow. In this second apply to each we've selected Skills as the output from previous steps and in the append to array variable action select Skills Item:

 

2-apply-append.png

 

Next we need to add an action in the first Apply to each. Make sure you are not just adding it immediately below the append to array variable but are outside the second apply to each.

 

The action we need to add is a Compose control and the input of that is the array variable. The reason we're doing that is so that the array variable is available in the follow-on actions.

 

The next action is an Excel Add a row into a table. In this case I've added their fullname from the original spreadsheet and then for the skills column select the Outputs of the Compose action above from the dynamic content.

 

3a-dynamicContent.png

 

The final action - still within the first apply to each - is to add a Set variable control to set the array variable back to null before the flow looks at the next email address in the original spreadsheet. From the dynamic content you select the Expression tab and type null then click OK. 

 

3-compose-addRow-set.png

 

To add the null expression, don't just type null into the Value field as that won't work but select it from the Expressions tab of the dynamic content.

 

4-nullExpression.png

 

If you have a very large list of staff it will take some time to populate the new spreadsheet. It took over 10 minutes to complete a staff list of about 260 people. But it's quite fun to watch it happening in real time as shown below and hopefully it will help as you try to make sure people populate the skills part of Delve.

 

FlowSkills.gif

 

 

Come back with any questions about this.

 

Rob
Los Gallardos
Microsoft Power Automate Community Super User

View solution in original post