【SharePoint】ユーザーの細かいプロパティを取得してNewFormに代入する【JavaScript】

こんにちは。
今回はget_currentUser()では取得できないようなプロパティを取得する方法を書いていきます。

PeopleManagerオブジェクトのgetMyProperties()メソッド

[PeopleManager]オブジェクトには、ユーザー プロパティと
ユーザー プロファイル プロパティの取得を行うための次のメソッドが含まれています。
 ・getMyProperties
 ・getPropertiesFor
今回は[getMyProperties]を利用してユーザーのプロパティを取得しましょう。

解説

まず、[getUserProperties]関数に関してですが、これはいつもどおりの初期化処理です。
対象は[peopleManager.getMyProperties]です。

上記でも記載したいようにこれはユーザーのプロパティを取得するためのメソッドです。
どのプロパティを取得したいのかについては、AzureADのプロパティを確認する必要がありました。
そして今回は[Department]と[WorkPhone]を取得していきます。

function onRequestSuccess(){
    var departmentproperty = personProperties.get_userProfileProperties()['Department']
    $("#Department").parent ().parent ().children (1).find ("input").val (decodeURI(departmentproperty));
    var workPhone = personProperties.get_userProfileProperties()['WorkPhone'];
    $("#ExternalTel").parent ().parent ().children (1).find ("input").val (decodeURI(workPhone));
}

onRequestSuccessメソッドでは、取得してきたプロパティを取得して、
指定の列にプロットするという処理を記載しています。

personProperties.get_userProfileProperties()[‘Department’]
→[‘Department’]が取得するプロパティ名です。
personProperties.get_userProfileProperties()[‘WorkPhone’]
→[‘WorkPhone’]が取得するプロパティ名です。

$(“#Department”).parent ().parent ().children (1).find (“input”).val (decodeURI(departmentproperty));
→”Department”列に対して取得してきた情報を入力しています。
$(“#ExternalTel”).parent ().parent ().children (1).find (“input”).val (decodeURI(workPhone))
→”ExternalTel”列に対して取得してきた情報を入力しています。

これらは適宜変更して上げる必要があります。
また、個のjQueryのコードは1行テキストに対応させてあります。
それ以外の列では別のコードになりますので注意してください。

→過去に書いた記事:列の取得まとめを参考に列に対応するように書いてください。

これらを実行するためにはjQueryが必須ですので、CDNでもいいので読み込んでおく必要があります。

終わりに

いかがでしたでしょうか。
結構お客様から言われることが多いユーザー情報の取得も、
まとめると結構簡潔に書けましたね。

そういえば過去記事の改定など今後行っていこうかなと思います。
色々情報が分かりづらかったりしているようなので・・・

それではまた・・・