IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

.attr("ows_Title") avec SPServices ne me retrourne pas ce que j'attends.


Sujet :

Développement Sharepoint .NET

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut .attr("ows_Title") avec SPServices ne me retrourne pas ce que j'attends.
    Bonjour,

    J'attaque un site pour recupérer la liste des bibliothèques afi de pouvoir ensuite scanner leur contenu.


    Je test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).attr("Title") == "Pages")
    pour récupérer les je filtre ensuite sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log("=>"+$(this).attr("ows_Title"));
    qui me retourne à priori le nom de la bibliothèque voulue

    Mais quand ensuite j'attaque pour récupérer la liste des documents contenus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var title = $(this).attr("ows_Title");
    avec dans l'appel SPServicies:
    il me retourne un message liste inexistante ...
    je me retrourve avec des différence ente nom et title ?

    genre:
    HSE Causerie vs HSE Causeries
    HSE Document Unique Vs Document Unique

    Je ne comprend d'ou vient cette différence entre le nom et le titre ? quelle propriété de la bibli dois-je récupérer ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Bonjour,

    $(this) etant contextuel, pouvez-vous preciser dans l'integralite les appels aux webservices que vous faites ?
    D'apres ce que vous decrivez, j'imagine que vous avez deux appels imbriques, le premier etant GetListCollection et le second GetListItems ?

    Regardez comment fonctionnent ces deux operations et leur ReturnValue :
    GetListCollection : https://msdn.microsoft.com/en-us/lib...ffice.12).aspx
    GetListItems : https://msdn.microsoft.com/en-us/lib...ffice.12).aspx

    Les proprietes des conteneurs comme les listes ou les bibliotheques correspond au nom de l'objet associe dans l'API serveur, pas besoin de prefixer avec "ows_".
    Les metadonnees des items/documents devraient etre recuperees avec "ows_" + [internalName].

    En outre, pour l'operation GetListItems, le parametre listName peut prendre soit le nom d'affichage de la liste (propriete Title de la liste), soit son GUID (propriete ID ou Name de la liste).

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Oui j'ai en effet des appels imbriqués, ce qui n'est pas pour m'enchanter
    Mais je n'ai pas trouvé d'autre solution pour consulter les documents des différentes bibliothèques, que de boucler sur les bibliothèques puis leur contenu.
    Si il existe une autre possibilité je suis preneur.

    Voici le code, attention les yeux ça pique !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     $().SPServices(
            {
                    operation: "GetAllSubWebCollection",
                    webURL: targetUrl,
                    async: false,
                    completefunc: function (xData, Status)
                    {
                            $(xData.responseXML).find("Web").each(function ()
                            {
                                    $().SPServices(
                                    {
                                            operation: "GetListCollection",
                                            webURL: $(this).attr("WebFullUrl"),
                                            async: false,
                                            completefunc: function (xData, Status)
                                            {
                                                    $(xData.responseXML).find("List").each(function ()
                                                    {
                                                            //function to get all items inside every list called "Pages"
                                                            if ($(this).attr("Title") == "Pages")
                                                            {
     
                                                                    $().SPServices(
                                                                    {
                                                                            operation: "GetListItems",
                                                                            webURL: $(this).attr("WebFullUrl"),
                                                                            async: false,
                                                                            listName: $(this).attr("Title"),
                                                                            CAMLViewFields: "<ViewFields><FieldRef Name='EncodedAbsUrl' /><FieldRef Name='Title' /></ViewFields>",
                                                                            completefunc: function (xData, Status)
                                                                            {
                                                                                    $(xData.responseXML).SPFilterNode("z:row").each(function ()
                                                                                    {
                                                                                            var title = $(this).attr("ows_Title");
                                                                                          console.log( $(this).attr('Name'));                                                                                       
                                                                                            if ($.inArray(title, TabLibs) != -1)
                                                                                            {
                                                                                                    console.log(title);
                                                                                                    $().SPServices(
                                                                                                    {
                                                                                                            operation: "GetListItems",
                                                                                                            async: false,
                                                                                                            //if you set this to true, you may get faster performance, but your order may not be accurate.
                                                                                                            webURL: targetUrl,
                                                                                                            listName:"HSE Causerie",
                                                                                                            CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
                                                                                                            CAMLQuery: "<Query>" +
                                                                                                                            "<Where>" +
                                                                                                                                "<Eq>" +
                                                                                                                                    "<FieldRef Name='PublicationPortail' />" +
                                                                                                                                    "<Value Type='Boolean'>1</Value>" +
                                                                                                                                "</Eq>" +
                                                                                                                            "</Where>" +
                                                                                                                            "<OrderBy>" +
                                                                                                                                "<FieldRef Name='Debut_Publication' Ascending='True' />" +
                                                                                                                            "</OrderBy>" +
                                                                                                                        "</Query>",
                                                                                                            CAMLRowLimit: 0,
                                                                                                            //AJax Callback
                                                                                                            completefunc: function (xData, Status)
                                                                                                            {
     
                                                                                                                    //Boucle sur les row:z retournés
                                                                                                                    var ListActu = [];
                                                                                                                    console.log('\n',xData.responseText,'\n');
                                                                                                                    $(xData.responseXML).SPFilterNode("z:row").each(function ()
                                                                                                                    {
                                                                                                                            ListActu.push(
                                                                                                                            {
                                                                                                                              Titre: $(this).attr('ows_Title'),
     
                                                                                                                            });
                                                                                                                    });
                                                                                                                    console.log(ListActu);
                                                                                                                    CreateActu(ListActu);
                                                                                                            }
                                                                                                    });
                                                                                            }
                                                                                    });
                                                                            }
                                                                    });
                                                            }
                                                    })
                                            }
                                    });
                            })
                    }
            })
    en console le souci est de pouvoir récupérer la bonne désignation de bibli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     console.log(title);
                                                                                                    $().SPServices(
                                                                                                    {
                                                                                                            operation: "GetListItems",
                                                                                                            async: false,
                                                                                                            //if you set this to true, you may get faster performance, but your order may not be accurate.
                                                                                                            webURL: targetUrl,
                                                                                                            listName:???????,
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Hello,

    Question, pourquoi ne pas utiliser la recherche plutôt que d'itérer à la main ? (Appel simple en REST)
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Comme suis dit je suis preneur de toute autre solution à ma portée...

    Tu veux dire un composant résultat de recherche ?
    On peut interroger plusieurs bibliothèques simultanément ? Un liste fixe de bibliothèque ?
    ça aurait quelle tronche une syntaxe de requete par exemple pour interroger les documents récents de bibli1 et bibli2 ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Voici le code, attention les yeux ça pique !
    Oula, ca brule meme.

    Plus serieusement, Javascript n'est pas adapte pour des requetes de listes sur un scope aussi large (collection de sites).
    Comment est representee votre liste de noms de Bibliotheque a interroger ? (attribut Titre de chaque Page ???)

    Pour des scopes aussi larges via une techno cliente, la solution de ludojojo est la meilleure.
    Le service de recherche indexe globalement du contenu, vous pourrez donc potentiellement interroger toutes les listes de tous les sites. Notez que les resultats ne seront pas temps reel, job d'indexation oblige.
    Il faudra tres certainement customiser ce service pour avoir un scope plus reduit (ex.: les listes qui vous interessent), a moins que des attributs distinctifs (ex.: type de contenu) permettent de filtrer une recherche globale.

    Par contre pour avoir un debut de solution il faudra nous preciser quelle est votre infra SharePoint (version et edition), car les possibilites ne sont pas les memes partout.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Notre infra est c'est SharePoint Server 2013—Standard Edition

    Pour ce qui est des recherches j'utilise déjà SP services pour interroger des bibliothèques de façon unitaire car je travaille sur des collections de site différentes et les composants de recherche ne me permettent pas d'atteindre les bibliothèque ...
    Pour ce qui est du développement, malheureusement je suis un pur produit php, pas asp
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    C'est bien vrai que quelque chose de valable unitairement ne le soit plus forcément quand on change d'échelle.

    Si vous voulez implémenter une solution en javascript avec Search, vous pouvez commencer à regarder sur les sites suivants:
    Les différentes API de Search, section Javascript ou REST
    Un exemple avec JSOM

    Un paramètre de requête, "sourceid" permet de définir le guid de la "source de résultats" applicable.
    Je vous en avais parlé lors de mon précédent post, ceci nécessite de créer une nouvelle source de résultats, soit au niveau du service de recherche (global), soit au niveau de la collection de sites si votre besoin s'y limite (paramètres du site / recherche).
    msdn officiel
    un exemple en ligne
    un exemple de config après avoir créé la source de résultats, on peut paramétrer "Transformation de requête" ce qui permet d'appliquer un filtre à toutes les requêtes sur cette source.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    au lieu de:
    {searchTerms}
    mettre:
    {searchTerms} (contentclass:STS_ListItem OR IsDocument:True) Path:https://mysharepoint/SUBSITE1/LISTNAME1/ Path:https://mysharepoint/SUBSITE2/LISTNAME2/
    On utilise ensuite ce result source, par exemple dans une requête via l'API REST:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://mysharepoint/_api/search/query?querytext='test txt'&sourceId='d8027d59-5c7d-4b8b-813b-8cf69a5dbf1d'&clienttype='Custom'
    Autre tip, il est possible de spécifier un (ou plusieurs) id de liste directement dans la requête .
    Exemple avec un appel REST/Get:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://mysharepoint/_api/search/query?querytext='test txt AND (ListId:18C0F01B-82A5-402D-8314-2EC77EC74E6D OR ListId:AE23A05E-627E-40CF-8FFC-1D30876EC5E7)'&clienttype='Custom'
    Ou encore, on peut utiliser ces mêmes filtres dans le paramétrage de la source de résultats (à la place de Path):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {searchTerms} (contentclass:STS_ListItem OR IsDocument:True) (ListId:18C0F01B-82A5-402D-8314-2EC77EC74E6D OR ListId:AE23A05E-627E-40CF-8FFC-1D30876EC5E7)

  9. #9
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Désolé pour ce retour tardif.
    Pour t'aider dans ton développement, je t'invite très très fortement à utiliser "SharePoint 2013 Search Query Tool". Il va très vite devenir ton meilleur allié !

    Pour ce qui est de la mise en place, je pense que @nonoxp à bien fait le tour. Tu peux aussi te faire plusieurs recherches (requêtes) et aggréger le contenu comme tu veux.
    Reste à savoir si tu veux être en full JS ou utiliser le méchanisme des display templates de SharePoint.
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Ok les gars ...
    Ben clairement je suis dans la m... ^^
    Merci pour toutes ces infos précieuses, va falloir que j'épluche ça à tête reposée.
    ça confirme juste mon opinion sur l'outil c'est une grosse usine a gaz visueuse, lourde et tentaculaire

    @ludojojo merci pour le lien de download... le truc m'a juste filé un gros mal de crane ... et j'ai pas encore réussi à faire fonctionner une seule requête
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Le service Search est a lui tout seul un bon gros morceau, attention a l'indigestion !

  12. #12
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    merci pour le lien de download... le truc m'a juste filé un gros mal de crane ... et j'ai pas encore réussi à faire fonctionner une seule requête
    La recherche est un point clé du produit, je t'invite à prendre le temps de te pencher sur le sujet car il est vraiment important !

    Pour l'outil, voici une configuration de base :
    1. SharePoint Site Url : Remplace "http://localhost" par l'url de ton site
    2. Select Properties : Path,Url,Title,Author,Write,ServerRedirectedEmbedURL,WorkId


    Bien sur, il faudra que tu ai lancé un full crawl depuis l'administration centrale avant
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Merci Ludo

    Oui j'avais au moins compris pour l'url de recherche ^^

    ça se complique nettement pour les propriétés a rechercher ...
    Select Properties : Path,Url,Title,Author,Write,ServerRedirectedEmbedURL,WorkId

    Y'a une liste ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Select Properties : Path,Url,Title,Author,Write,ServerRedirectedEmbedURL,WorkId
    C'est l'outil qui propose ces propriétés par défaut...
    Citation Envoyé par SpaceFrog Voir le message
    Y'a une liste ???
    Bien sûr...
    Mais comme toujours avec SharePoint, c'est pas super simple à exploiter.
    Tu trouveras la liste dans l'administration centrale :
    1. System Settings
    2. Servers
    3. Manage services on server
    4. SharePoint Server Search (ou autre nom du service de recherche en fonction de ta configuration)
    5. Search Service Applications
    6. Search Service Application (ou autre application en fonction de ta configuration)
    7. Queries and Results
    8. Search Schema
    9. Managed Properties


    Bonne pêche aux informations
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    C'est vraiment ce coté de mysticisme que je reproche a SharePoint ...
    C'est super puissant, certes, mais alors pour trouver les infos c'est vraiment le parcours du combattant !!
    Et il suffit de modifier un seul petit truc et plus rien ne fonctionne.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Bon, alors suite à vos différentes remarques constructives et à vos conseils précieux, j'ai décidé de changer de méthode pour attaquer mes données:
    Exit les boucles imbriquées qui piquent les noeils

    Je commence à entrevoir l'utilité du Search Query Tool du Ludo ...

    J'ai alors pensé pouvoir passer par REST mais cette fois sans les SPServices parce que le CAML c'est juste pas possible et je ne peux pas y intégrer certaines variables du user ...

    J'ai donc pensé a passer par une simple requete Jquery AJAX pour y coller le Querytext

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
            var QueryParams =  {
                                    '__metadata' : {'type' : 'Microsoft.Office.Server.Search.REST.SearchRequest'},
                                    'Querytext' : ' [ici mon query text ] '
                                    }  ;  
     
            $.ajax( {
                 method: "POST",
                 headers: { 
                            "accept": "application/json;odata=verbose",
                            "content-type": "application/json;odata=verbose",
                             "X-RequestDigest": $("#__REQUESTDIGEST").val() 
                           }, 
                 url: "http://xxxxxxxxxxxxxxxxxxx/_api/search/postquery",
                 data: JSON.stringify(QueryParams),
                 success: function(resp){
                              console.log ( resp );
                             } ,
                 error : function(data){ console.log(data);}
            })

    Sauf que je récupère à chaque fois cette réponse:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {"error":{"code":"-1, Microsoft.Office.Server.Search.REST.SearchServiceException","message":{"lang":"fr-FR"
    ,"value":"La demande de recherche ne peut pas \u00eatre vide."}}}

    Mais où donc me fourvoies-je ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Bonjour,

    Bien que le POST soit possible, il serait peut etre plus simple de requeter en GET (pas de request digest).
    Les deux operations sont me semble-t-il equivalentes en termes de parametres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/_api/search/query?querytext='" + queryText + "'"
    Ref: https://msdn.microsoft.com/en-us/lib.../jj163876.aspx

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Il semble de toute façon qu'un ajax en POST redige une url en GET postquery ?? Quel bronx ce SharePoint !!!

    Est ce que je ne risque pas au vu de la verbosité des requêtes d'atteindre rapidement la longueur max autorisée ???

    Après tests il apparait en effet que le get atteigne bien la module de requête mais pour le moment le primary results reste null dans la réponse...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Voici le code de mon test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        var QueryParams =  {'request':{
                                            '__metadata' : {'type' : 'Microsoft.Office.Server.Search.REST.SearchRequest'},
                                            'Querytext':'path:"http://xxxxx/espaces/RH/Lists/Equipe_RH" PublicationPortailOWSBOOL=1',
                                            'ClientType':'ContentSearchRegular'
                                            }
                                  }
     
            $.ajax( {
                 method: "GET",
                 headers: { 
                            "accept": "application/json;odata=verbose",
                            "content-type": "application/json;odata=verbose",
                             "X-RequestDigest": $("#__REQUESTDIGEST").val() 
                           }, 
                 url: "http://xxxxx/_api/search/query",
                 data: JSON.stringify(QueryParams),
                 success: function(resp){
                              console.log ( resp );
                             } ,
                 error : function(data){ console.log("erreur\n",data);}
            })

    Me donne
    PrimaryQueryResult => null
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Points : 2 082
    Points
    2 082
    Par défaut
    Aucune idee de longueur max de requete que vous pouvez atteindre, il me semble que ca depend des navigateurs (est-ce vrai pour un appel ajax??).
    Avez vous plusieurs conditions "path" ?
    Il est possible de reduire considerablement cette longueur si vous factorisez tous ces elements de querytext dans une "source de resultats", comme explique dans un post precedent.

    Pour l'appel, testez avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     $.ajax( {
                 method: "GET",
                 headers: { 
                            "accept": "application/json;odata=verbose",
                            "content-type": "application/json;odata=verbose"
                           }, 
                 url: "http://xxxxx/_api/search/query?querytext='path:\"http://xxxxx/espaces/RH/Lists/Equipe_RH\" PublicationPortailOWSBOOL=1'&clienttype='ContentSearchRegular'",
                 success: function(resp){
                              console.log ( resp );
                             } ,
                 error : function(data){ console.log("erreur\n",data);}
            })

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo