SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Abteilung des aktuellen Users für Link Änderung

Geprüfte Antwort Dieser Beitrag hat 8 Antworten

Ohne Rang
234 Beiträge
Patrick erstellt 17 Juni 2015 12:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

prinzipiell eine Anschlussfrage an meine letzte: http://sharepointcommunity.de/forums/t/30787.aspx

Ich möchte einen Link auf der Startseite ändern je nach Abteilung des angemeldeten Users, sodass er einen direkten Link auf seine Teamseite hat.

Leider bekomme ich das nicht hin. Versuche mein Glück mit:

http://siteurl/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='Department')?@v='domain\username'

Leider klappt das so nicht. Im Browser bekomme ich den Output:

<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">IT</d:GetUserProfilePropertyFor>

Aber wenn ich das Script ausführe nicht.

Hat jemand noch eine Idee, oder einen Tipp wie ich das mit REST löse? (SP2013 on prem)

 

Alle Antworten

Ohne Rang
46 Beiträge
Martin089 Als Antwort am 17 Juni 2015 12:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Patrick,

ich schätze mal du willst das ganze über JavaScript lösen.

Vielleicht hilft dir hier Microsoft weiter: https://msdn.microsoft.com/en-us/library/dn790354.aspx#bk_UserProfile

 

VG,
Martin089

Ohne Rang
234 Beiträge
Patrick Als Antwort am 17 Juni 2015 13:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Martin,

ja, so stell ich mir das vor, jedoch klappt es einfach nicht mit dem "Department" da ich das nur mittels "GetUserProfilePropertyFor" bekomme.

Mein Script sieht so aus:

<script type="text/javascript">

$(document).ready(function () {

var loginName = "";

 

function GetCurrentUser() {

var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='Office')?@v='domain\username'";

 

var requestHeaders = { "accept" : "application/json;odata=verbose" };

 

$.ajax({

  url : requestUri,

  contentType : "application/json;odata=verbose",

  headers : requestHeaders,

  success : onSuccess,

  error : onError

});

}

 

function onSuccess(data, request){

    alert(data);

}

 

function onError(jqxr,errorCode,errorThrown){

alert("Error: " + jqxr.responseText)

}

GetCurrentUser();

});

</script>

 

Aber in der alertbox bekomme ich nur "undefined". Vielleicht hast du mir noch einen Tipp...

Ich würde dann den Output in eine Variable speichern und dann mit switch case den Link ändern.

Wie greife ich den Output aus der REST-Abfrage ab? Im Browser klappt ja eben alles...

Grüße

 

Patrick

Zu meinem SharePoint Blog: afraIT

Ohne Rang
46 Beiträge
Martin089 Als Antwort am 17 Juni 2015 13:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

hmm ich hab bisher bei meinen requests keinen contentType angegeben

url: requestUri,
method: "GET",
headers: requestHeaders,
success: onSuccess,
error: onError

und ich vermisse bei dir die Methode. Im Browser machst du ja auch nurn GET sicherlich^^

Das Abgreifen sollte aber soweit funktionieren.

function onSuccess(data) {

//parse JSON here und do some stuff

}

Ohne Rang
234 Beiträge
Patrick Als Antwort am 17 Juni 2015 14:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

GET macht bei mir kein Unterschied für mein Problem. Auch contentType getestet (mit und ohne, gleiches Problem).

Könntest du mir einen Tipp geben was du meinst ich hier schreiben soll?

//parse JSON here und do some stuff

 

Wenn ich schreibe: alert(data) -> bekomme ich in der Box: [object Object]

Wenn ich schriebe: alert(data.d.Office) -> bekomme ich in der Box: undefined

Grüße

 

Patrick

Zu meinem SharePoint Blog: afraIT

Ohne Rang
234 Beiträge
Patrick Als Antwort am 17 Juni 2015 14:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

YES!

Hab's hinbekommen!

Skript:

<script type="text/javascript">

$(document).ready(function () {

var loginName = "domain\username";

var userid = _spPageContextInfo.userId;

 

function GetCurrentUser() {

//var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";

var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/SP.UserProfiles.PeopleManager/GetUserProfilePropertyFor(accountName=@v,propertyName='Office')?@v=" + "'" + loginName + "'";

 

var requestHeaders = { "accept" : "application/json;odata=verbose" };

 

$.ajax({

  url : requestUri,

  method: "GET",

  //contentType : "application/json;odata=verbose",

  headers : requestHeaders,

  success : onSuccess,

  error : onError

});

}

 

function onSuccess(data){

 

  var department = data.d.GetUserProfilePropertyFor;

  //alert(department);

 

 

    if(department == "IT")

    {

    //alert("if clause");

    document.getElementById("teamuebersicht").innerHTML = "<a href='http://sp13/teams/it'>Workspace</a>";

    }

 

}

 

function onError(jqxr,errorCode,errorThrown){

alert("Error: " + jqxr.responseText)

}

 

GetCurrentUser();

 

});

</script>


Wichtig:
Der Username (bei mir Variable loginName) muss wie folgt sein: domain%5Clastname%2Efirstname (%5C = \) und (%2E = .)
Jetzt muss ich mir nur noch den Username irgendwie easy holen... Aber das klappt bestimmt auch noch irgendwie... Notfalls mit einem zweiten REST
Komplettes Skript (mit get user / get Department / set link) nun für den der's braucht (haben mag) hier: http://1drv.ms/1enskYR

Grüße

 

Patrick

Zu meinem SharePoint Blog: afraIT

Ohne Rang
46 Beiträge
Martin089 Als Antwort am 17 Juni 2015 14:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schön das es soweit funktioniert hat. Und ja, man sollte darauf achten das der Request richtig formatiert ist.
JavaScript hat da auch Funktionen für wie "encodeURIComponent("Domain/lastname.firstname")".

Wenn du mit Username den aufgelösten Namen meinst, wirst du den sicher unter der DisplayName-Eigenschaft
finden, den du dir beim Request auch gleich miterfragen lassen kannst.

Ohne Rang
234 Beiträge
Patrick Als Antwort am 17 Juni 2015 14:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

laut: http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp

Bringt mir encodeURIComponent nicht viel, da es weder \ noch einen . behandeln kann.

Grüße

 

Patrick

Zu meinem SharePoint Blog: afraIT

Ohne Rang
46 Beiträge
Martin089 Als Antwort am 17 Juni 2015 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Stimmt, sry mein Fehler.
Dann aber noch weiterhin viel Erfolg mit deinem Vorhaben^^