Get Login Name from People Picker

Discussions about Forms Designer for SharePoint 2013 / 2016 and Office 365.
Locked
User avatar
TonyDuke
Posts: 71
Joined: Mon Sep 11, 2017

27 Feb 2018

Good Morning,

I am trying to retrieve the Login Name from a People Picker Field on an Edit Form to show or hide fields based on if the current user is the user entered in the People Picker Field.

My Field is called "Responsibility" and from looking at the documentation the correct method to get the email value of the field is below

Code: Select all

var responsibility = fd.field('Responsibility').value()[0].EntityData.Email;
As you will see from the below image the above method does not work.
Capture.PNG
Capture.PNG (12.88 KiB) Viewed 4071 times
Any help appreciated.

Thanks

User avatar
Nikita Kurguzov
Posts: 889
Joined: Mon Jul 03, 2017

27 Feb 2018

Dear Tony,
I can only assume by the returned value that you are trying to execute this code on Display Form or People Picker field is set to read-only in the designer. In all other cases, it should return an object with multiple properties, but on Display Form, it only stores the name and there is no simple way to retrieve an email.

It would be easier to retrieve an email when first saving an item or editing it, on save, and store it in another field using this JavaScript.
Then you can easily retrieve it from this field even on the Display Form.
Cheers

User avatar
TonyDuke
Posts: 71
Joined: Mon Sep 11, 2017

01 Mar 2018

Hi Nikita,

Thank you for your response, for your information on further investigation it appears the issue is with that particular user "Mark Stacey", the functionality works for all other users, I can't understand why?!?
The function works on a New Form for that user but not on an edit Form.

However as you rightly say there is no way to retrieve the email address on a Display Form and we do need to apply the functionality there also, so I have now added an additional field to store the email address that is created on the New Form and Updated onChange on the Edit Form and we are using this field as the test for our function.

Thanks again.

User avatar
Adam Reyes
Posts: 35
Joined: Tue Mar 04, 2014

05 May 2019

Is it possible to get the users Office or Work Phone number from the People Picker as well? I've tried different variations of the code but can't seem to pull the phone number. I've tried using this to no avail:

var varPhone = fd.field('ContractsAdminName').value()[0].EntityData.WorkNumber;

ibarrandres
Posts: 23
Joined: Wed May 27, 2015

07 May 2019

For something like this.. If Active directory has that information and its being used in conjunction with the user profile service, I would just use the

Code: Select all

 _api/web/CurrentUser 
endpoint.

example of response:

Code: Select all

<?xml version="1.0" encoding="utf-8"?><entry xml:base="https://webapplication.com/sites/sitecollection/_api/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><id>https://webapplication/sites/sitecollection/_api/Web/GetUserById(1)</id><category term="SP.User" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" href="Web/GetUserById(1)" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Groups" type="application/atom+xml;type=feed" title="Groups" href="Web/GetUserById(1)/Groups" /><title /><updated>2019-05-07T03:06:25Z</updated><author><name /></author><content type="application/xml"><m:properties><d:Id m:type="Edm.Int32">1</d:Id><d:IsHiddenInUI m:type="Edm.Boolean">false</d:IsHiddenInUI><d:LoginName>i:0#.w|domain\firstname.lastname</d:LoginName><d:Title>Andres Ibarra</d:Title><d:PrincipalType m:type="Edm.Int32">1</d:PrincipalType><d:Email></d:Email><d:IsShareByEmailGuestUser m:type="Edm.Boolean">false</d:IsShareByEmailGuestUser><d:IsSiteAdmin m:type="Edm.Boolean">true</d:IsSiteAdmin><d:UserId m:type="SP.UserIdInfo"><d:NameId>s-1-5-21-773101994-1372423740-560890886-11372</d:NameId><d:NameIdIssuer>urn:office:idp:activedirectory</d:NameIdIssuer></d:UserId></m:properties></content></entry>
OR

Code: Select all

https://webapplication/sites/sitecollection/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='NamePropertyfromAD')?@v=%27accountname%27

Example of response:

Code: Select all

<d:GetUserProfilePropertyFor xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">Andres</d:GetUserProfilePropertyFor>
For the first endpoint...watch for the json response and grab the value needed then pass that to the field. The second specifies which property to return so you will only have one value to look for.

Locked
  • Information
  • Who is online

    Users browsing this forum: No registered users and 4 guests