SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

Standardspaltenwerte mit JSOM oder REST setzen

bewertet von 0 Usern
Dieser Beitrag hat 34 Antworten | 2 Followers

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Ich habe ganz übersehen, daß wir hier von O365 reden. Da ist es etwas einfacher, aber immer noch weite entfernt von wirklich einfach: http://stackoverflow.com/questions/15850037/remotely-accessing-sharepoint-2013-using-rest-on-office-365-from-javascript

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

Ich habe noch eine Frage zur REST API: Ich versuche einen Ordner anzulegen. Bei folgendem Code bekomme ich aber die Fehlermeldung "Bad Request"

$.ajax({
        url : _spPageContextInfo.webAbsoluteUrl + "/_api/web/folders",
        type: "POST",
        data: JSON.stringify({ "_metadata" : { "type" : "SP.Folder" }, "ServerRelativeUrl" : "Firmen/FirmaNeu"}),
        headers: {
            "accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val(),
            "content-type": "application/json;odata=verbose"
        },
        success: function () {
            alert("Erfolgreich");
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });

Hat jemand eine Idee, was ich falsch mache?

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Ich nehme an, daß "Firmen/FirmaNeu" nicht serverrelativ ist.

Übrigens kannst Du Dir das sparen und sogar auf data komplett verzichten, wenn Du als URL sowas verwendest:
_api/web/Folders/Add('Firmen/FirmaNeu')

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

Vielen Dank für deine Hilfe! :) Mit  _api/web/Folders/Add('Firmen/FirmaNeu') hat es jetzt geklappt

Top-150-Beitragsschreiber
Beiträge 110

Weißt du vielleicht auch, ob man mit der REST api Verwaltete Metadaten Felder mit Werten belegen kann? Ich habe es so probiert:

var call = jQuery.ajax({
            url: _spPageContextInfo.webAbsoluteUrl +
                "/_api/Web/Lists/getByTitle('Firmen')/Items(" +
                item.Id + ")",
            type: "POST",
            data: JSON.stringify({
                { "Firma" : { "__metadata" : { "type" : "SP.Taxonomy.TaxonomyFieldValue"}, "Label" : "Afotek", "TermGuid" : "2c84e29e-0f6a-4ab0-956b-42f740706d30", "WssId" : -1 } }
                }),
          
            headers: {
                Accept: "application/json;odata=verbose",
                "Content-Type": "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                "IF-MATCH": item.__metadata.etag,
                "X-Http-Method": "MERGE"
            }
        });

Das funktioniert jedoch nicht ( item wird beim Funktionsaufruf mitgegeben).

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Das kann ich Dir leider nicht sagen.

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

Schade, aber trotzdem Vielen Dank für die vielen hilfreichen Tipps :)

Top-150-Beitragsschreiber
Beiträge 110

Ein Problem hätte ich dann noch :D

Folgenden Code habe ich aus einem MSDN Beispiel um einen Ordnernamen zu ändern:

function rename()
{
    var call = jQuery.ajax({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/GetFolderByServerRelativeUrl('/sites/Testumgebung/doc/Firmen/Firma1')",
        type: "POST",
        data: JSON.stringify({
            "__metadata": { "type": "SP.Folder" }, "Firmenname": "CHANGED_VIA_REST"
            }),
        headers: {
            Accept: "application/json; odata=verbose",
            "X-RequestDigest": $("#_REQUESTDIGEST").val(),
            "If-Match": "*",
            "X-HTTP-Method": "MERGE",
            "Content-Type": "application/json; odata=verbose"
            },
        success: function(){
            alert("Erfolgreich");
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert(errorThrown);
        }
    });
}

Ich erhalte die Fehlermeldung forbidden, verstehe aber nicht warum es verboten ist, da ja wie gesagt Microsoft es selbst so als Standard vorgibt.

Top-150-Beitragsschreiber
Beiträge 110

Andi Fandrich:

Ich habe ganz übersehen, daß wir hier von O365 reden. Da ist es etwas einfacher, aber immer noch weite entfernt von wirklich einfach: http://stackoverflow.com/questions/15850037/remotely-accessing-sharepoint-2013-using-rest-on-office-365-from-javascript

Nach einigen Tagen recherche, bekomme ich nun die entsprechenden Tokens, um meine REST Anfragen zu authorisieren. Die REST Anfragen klappen auch soweit (innerhalb von SharePoint). Jetzt habe ich versucht das gleiche Szenario von CRM aus durchzuführen. Auch hier bekomme ich die Tokens zur Authentifizierung, aber beim Ausführen der Querys bekomme ich die Fehlermeldung "Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://drimalski.sharepoint.com/sites/Testungebung/doc/_api/web. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt)"

Weiß hierfür jemand Rat?

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Oh Mist, das CORS-Problem hatte ich ganz vergessen. Stichworte dafür sind SharePoint Cross Domain Library und SP.RequestExecutor.js

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

Ich habe mir das mal angeguckt. Scheint an sich die Lösung zu sein. Das Problem ist, dass ich ja aus CRM heraus agiere und dort die SharePoint-Bibliotheken nicht habe. Wenn ich also SP.RequestExecutor.js einbinde, bekomme ich die Fehlermeldung SP not defined. Binde ich dafür SP.Runtime.js ein, bekomme ich den Fehler Type not defined :/ gibt es nur diese Lösung für Cross Domain Zugriffe?

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Du müßtest da tatsächlich noch einige js-Dateien mehr einbinden (am besten direkt aus SharePoint).

Ich bin nicht ganz auf dem Laufenden, glaube aber daß man die Authentifizierung auch selbst lösen kann (in O365). Google doch mal nach ADAL.js

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

ADAL.js benutze ich ja ;) ich hole mir damit ein token ( über Azure AD usw.) ,das klappt. Wenn ich dann versuche in CRM das Script auszuführen um (erstmal testweise) ein paar Informationen über die SharePoint Sammlung auszulesen, erhalte ich die Cross Domain Fehlermeldung. Habe da auch in den letzten Stunden in Richtung JSONP und $.support.cors = true gegoogelt, noch aber keine Lösung dafür gefunden

Top-10-Beitragsschreiber
Männlich
Beiträge 18.370

Sorry, bin wohl etwas verwirrt. Eine Lösung habe ich Dir aber leider nicht :-(

Ich baue sowas i.d.R. ein bißchen komplizierter mit einer eigenen Web-API dazwischen. Die greift auf die Systeme zu und kann von außen per JS, aber auch von allen möglichen (Mobile-)Apps angesprochen werden.

Viele Grüße
Andi
af @ evocom de
Blog
Top-150-Beitragsschreiber
Beiträge 110

Da das alles nicht so wirklich hinhaut wegen dem Cross Domain Problem:

Wäre es denn möglich Dokumente lokal per Javascript zu SharePoint hochzuladen? Da kommt es zu den gleichen Authentifizierungsproblemen etc. oder? :/

Seite 2 von 3 (35 Elemente) < Zurück 1 2 3 Weiter > | RSS