Sharepoint online : Récupérer les noms de colonnes / champs d'un type de contenu via JSON

Copper Contributor

Bonjour, 

pour faire simple j'ai créée un type de contenu "myCT" pour lequel j'ai défini des champs / colonnes. 

J'ai aussi créée un librairie de document "myLib" à laquelle j'ai associé le type de contenu. 

 

Je dois créer un formulaire de recherche qui puisse trouver les documents d'une lib en utilisant les champs / colonne du type de contenu. Pour ça j'ai créée un composant WebPart. Ce composant doit générer un formulaire à la volée (en utilisant javascript) qui récupère les datas de myCT et qui puisse effectuer une recherche sur myLib...

 

J'ai besoin de récupérer : 

  • le nom du champ
  • le type de champ utilisé
  • les valeurs données (dans le cas de liste de choix)

J'ai découvert que pour accéder à toutes ces informations on pouvait passer via un API rest dans ce genre là : https://myAppUrl.sharepoint.com/_api/web/

 

Mon soucis est que je n'arrive pas à trouver le bon point d'entrée. J'ai un peu exploré ces URL sans succès : 

J'ai tenté aussi une autre approche en javascript et en cherchant à afficher les content type utilisés avec un script sympathique : 

 

function getallContentTypes() {
    var clientContext = SP.ClientContext.get_current();    oContentTypes = clientContext.get_web().get_contentTypes();    clientContext.load(oContentTypes);    clientContext.executeQueryAsync(
        Function.createDelegate(this, function() {
            var ctypesInfo = '';
            var ctypesEnumerator = oContentTypes.getEnumerator();
            while (ctypesEnumerator.moveNext()) {
                var ocontentType = ctypesEnumerator.get_current(); 
ctypesInfo
+= '\n' + 'ContentType Title: ' + ocontentType.get_name()+'\t'+ ocontentType.get_id(); }
console.log(ctypesInfo.toString()); }), Function.createDelegate(this, function() {
 
console.log('failed'); })); } function injectMethod(){ getallContentTypes(); } ExecuteOrDelayUntilScriptLoaded(injectMethod, "sp.js");

Ce script a eu pour effet d'afficher mon type de contenu et son id. 

ContentType Title: myCT 0x0101007D18D0E5D0A176498869E2673AD0CA14

J'ai présumé qu'on pouvait avec ces informations là accéder à ce dont j'ai besoin via une requete REST dans ce genre : 

 

/_api/Web/ContentTypes('0x010100ED0CEB986D733A47AD45D9A995911BAA')/Fields
_api/web/AvailableContentTypes?$select=Name,Id,StringId&$filter=Name eq 'myCT'

Malheurement tout cela ne fonctionne pas vraiment. 

Merci pour votre aide. 

0 Replies