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 :

SharePoint Online Office 365 : Ma première application avec Napa


Sujet :

Développement Sharepoint .NET

  1. #1
    Nouveau membre du Club Avatar de kyria
    Femme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études et développement

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Points : 30
    Points
    30
    Par défaut SharePoint Online Office 365 : Ma première application avec Napa
    Bonjour,

    Comme mon titre l'indique, je découvre Napa. J'ai testé le tutoriel suivant jusqu'au bout, mais maintenant j'ai plusieurs questions/constats à ce sujet !

    Allez, feu, c'est parti ^^ :

    1/ Le nombre de listes dans le site reste un mystère intégral pour moi.
    Lorsque je lance mon application Napa compilé, j'en retrouve 3 : 2 existantes plus ma liste de test que j'ai créé avec l'application.
    Nom : nombre listes.png
Affichages : 759
Taille : 27,2 Ko

    Les listes trouvées sont donc les suivantes :
    Nom : listes.png
Affichages : 590
Taille : 6,7 Ko

    Pourtant lorsque je vais dans mon contenu de site, j'en vois plein d'autres SAUF celles mentionnées sur l'image plus haut
    Nom : pleindelistes.png
Affichages : 740
Taille : 39,5 Ko

    Questions : D'où viennent ces listes mystères alors ? Pourquoi mon appli Napa ne renvoi-t-elle pas les autres listes ? Et ma fameuse liste de Test, où est-elle cachée ???

    Bon, cette fameuse galerie de pages maître est un classique sur SharePoint je me dit qu'il s'agit probablement des listes cachées (ou pas...) du site et que je devrais les retrouver dans les paramètres du site. Et là, Bingo : je retrouve bien mes deux listes de bases
    Nom : 2listes.png
Affichages : 682
Taille : 39,4 Ko
    Mais! Questions : Quid des autres bibliothèques masquées telles que "la galerie des thèmes" ou autre ? Pourquoi n'apparaissent-elles pas dans mon compte si les deux autres y sont ? Et encore une fois où est passée ma liste de Test ??

    Pourtant le code me parait correct on récupère le contexte actuel et donc le site courant. Alors pourquoi ? Que se passe-t-il ? Aurais-je manqué quelque chose ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var context = SP.ClientContext.get_current();
    var web = context.get_web();
    var lists = web.get_lists();
    S'il y a des avis éclairés, je prends

    2/J'ai mon application Napa, c'est bien joli mais j'en fait quoi ??
    Elle n'est pas jolie, est pseudo-fonctionnel (nombre de listes mystère) mais j'aimerais la réutiliser sur un autre site Sharepoint (pour rappel on est online). D'après ce que j'ai compris je dois la l'ouvrir dans visual studio 2013 et la packager. Très bien. Cependant une fois dans visual studio 2013, j'ai un prompt de connexion pour accéder à mon portail sharepoint office 365 (ok, jusque là c'est normal), mais il m'ouvre automatiquement.....sur le site du développeur!

    Questions : Comment mettre mon application ailleurs ? Comment utiliser mon package ?

    Pour ce qui est du package à priori j'ai trouvé qu'on pouvait faire sur le site du développeur "nouvelle application à tester > téléchargez-là > puis sélectionner le fichier *.debugapp qu'on retrouve dans le fichier bin/debug du projet VS2013". Petit hic, lorsque SPonline cherche à l'installer, j'obtiens une erreur car mon application ayant été deployé via Napa, elle existe déjà dans la même version sur le site du développeur.

    Mais ! Questions : ça ne réponds toujours pas à ma question comment employer mon application sur un autre site SPonline ? Avez-vous des idées sur la manière de s'y prendre ? Faut-il obligatoirement passer par le SharePoint Store ? Et question subsidiaire : Puis-je créer une page de formulaire connecté à une liste SharePoint via Napa ?


    Voilà, voilà je pense avoir fait le tour de mes questions sur Napa et son utilisation, pour le moment;

    Merci d'avance pour votre aide,

    Kyria

  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,

    Citation Envoyé par kyria Voir le message
    1/ Le nombre de listes dans le site reste un mystère intégral pour moi.
    Questions : D'où viennent ces listes mystères alors ? Pourquoi mon appli Napa ne renvoi-t-elle pas les autres listes ? Et ma fameuse liste de Test, où est-elle cachée ???
    Un add-in est un sous-site (d'un point de vue gestion de contenu). Les listes sont dans l'add-in.
    Exemple:
    - mon site: https://[tenant].sharepoint.com/sites/dev/
    - j'y installe l'add-in "testappli", l'url du site add-in est : https://[tenant]-[url unique key].sharepoint.com/sites/dev/testappli/

    Citation Envoyé par kyria Voir le message
    Bon, cette fameuse galerie de pages maître est un classique sur SharePoint je me dit qu'il s'agit probablement des listes cachées (ou pas...) du site et que je devrais les retrouver dans les paramètres du site. Et là, Bingo : je retrouve bien mes deux listes de bases
    Mais! Questions : Quid des autres bibliothèques masquées telles que "la galerie des thèmes" ou autre ? Pourquoi n'apparaissent-elles pas dans mon compte si les deux autres y sont ? Et encore une fois où est passée ma liste de Test ??
    Cette page n'a rien a voir avec les listes, il s'agit du principal menu d'administration de site (/_layouts/15/settings.aspx).
    Eventuellement pour ces deux cas precis il se trouve que cliquer sur le menu vous redirigera vers une bibliotheque "systeme" de base, mais c'est rarement le cas lorsqu'on navigue depuis ces menus.
    La seule facon de connaitre la liste des listes/bibliotheques de site depuis le navigateur est :
    - soit d'utiliser l'url [URL du site]/_layouts/15/viewlsts.aspx mais ceci est refuse dans le cas d'un site "add-in" donc impossible de gruger par l'url
    - soit d'utiliser l'url [URL du site]/_layouts/15/mcontent.aspx et ca marche sur SPOnline
    - soit, plus complique, d'utiliser l'api REST [URL du site]/_api/web/lists?$select=Title (c'est plus lisible si vous pouvez forcer l'en-tete Http Accept="application/json;odata=verbose" en utilisant par exemple un plugin comme Postman ou RestClient)

    Sinon un bon coup de PowerShell (Sharepoint management Shell) et le tour est joue.


    Citation Envoyé par kyria Voir le message
    Pourtant le code me parait correct on récupère le contexte actuel et donc le site courant. Alors pourquoi ? Que se passe-t-il ? Aurais-je manqué quelque chose ?
    Regardez bien l'url de la page qui execute le script...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var context = SP.ClientContext.get_current(); // contexte de page actuel -> add-in
    var web = context.get_web(); // site rattache au contexte, ce n'est pas le site hote dans lequel vous avez installe l'add-in (host web)
    Citation Envoyé par kyria Voir le message
    2/J'ai mon application Napa, c'est bien joli mais j'en fait quoi ??
    Elle n'est pas jolie, est pseudo-fonctionnel (nombre de listes mystère) mais j'aimerais la réutiliser sur un autre site Sharepoint (pour rappel on est online). D'après ce que j'ai compris je dois la l'ouvrir dans visual studio 2013 et la packager. Très bien. Cependant une fois dans visual studio 2013, j'ai un prompt de connexion pour accéder à mon portail sharepoint office 365 (ok, jusque là c'est normal), mais il m'ouvre automatiquement.....sur le site du développeur!

    Questions : Comment mettre mon application ailleurs ? Comment utiliser mon package ?
    Bouton publication dans Napa.
    http://dev.office.com/docs/add-ins/p...-visual-studio
    C'est un poil plus complique de passer par visual studio (quoique), la marche a suivre est egalement indiquee dans ce lien.

    Citation Envoyé par kyria Voir le message
    Pour ce qui est du package à priori j'ai trouvé qu'on pouvait faire sur le site du développeur "nouvelle application à tester > téléchargez-là > puis sélectionner le fichier *.debugapp qu'on retrouve dans le fichier bin/debug du projet VS2013". Petit hic, lorsque SPonline cherche à l'installer, j'obtiens une erreur car mon application ayant été deployé via Napa, elle existe déjà dans la même version sur le site du développeur.

    Mais ! Questions : ça ne réponds toujours pas à ma question comment employer mon application sur un autre site SPonline ? Avez-vous des idées sur la manière de s'y prendre ? Faut-il obligatoirement passer par le SharePoint Store ? Et question subsidiaire : Puis-je créer une page de formulaire connecté à une liste SharePoint via Napa ?
    N'utilisez pas le .debugapp pour deployer vers la prod. Cela ne sert - a juste titre - qu'au dev. Il est d'ailleurs interdit par MS de publier des applis en mode debug sur le Store.
    Pour info, il est impossible de deployer deux fois le meme package dans la ferme SharePoint, mais ce qui differencie deux add-ins entre eux c'est le ProductId qui se situe dans le AppManifest.xml.

    En pratique :
    - le debugapp est deploye par l'outil de developpement (VS ou Napa) directement dans le site de developpeur.
    - quand on est pret a publier l'appli, on gere les identifiants oauth (facultatif), on la package (l'IDE s'en charge) et on deploie ce package soit sur le Store (global et public), soit sur l'AppCatalog (local a votre tenant).
    Plus d'infos sur https://msdn.microsoft.com/fr-fr/lib.../fp179933.aspx

    Bon courage !

  3. #3
    Nouveau membre du Club Avatar de kyria
    Femme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études et développement

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Points : 30
    Points
    30
    Par défaut
    Un add-in est un sous-site (d'un point de vue gestion de contenu). Les listes sont dans l'add-in.
    Ah oui d'accord. Je ne l'avais pas vraiment compris. C'est un point clef qui explique tout.

    - soit d'utiliser l'url [URL du site]/_layouts/15/viewlsts.aspx mais ceci est refuse dans le cas d'un site "add-in" donc impossible de gruger par l'url
    - soit d'utiliser l'url [URL du site]/_layouts/15/mcontent.aspx et ca marche sur SPOnline
    - soit, plus complique, d'utiliser l'api REST [URL du site]/_api/web/lists?$select=Title (c'est plus lisible si vous pouvez forcer l'en-tete Http Accept="application/json;odata=verbose" en utilisant par exemple un plugin comme Postman ou RestClient)

    Sinon un bon coup de PowerShell (Sharepoint management Shell) et le tour est joue
    Alors :
    - En effet ça ne passe pas
    - J'obtiens la bonne page mais elle est vide. (cf 1ere image) Par contre, le lien sur le côté me permet bien de rejoindre ma liste "Test" et de vérifier les items créés via mon app.
    Nom : listesaddin.png
Affichages : 595
Taille : 24,7 Ko
    Nom : listeTest.png
Affichages : 637
Taille : 23,5 Ko
    -A priori on ressort bien la liste des listes du site au format XML. En revanche rien à voir mais je n'ai pas compris le fonctionnement de postman.
    Dans l'onglet "Authorization", j'ai mes credentials SPonline; Pour "Header" voir image ci-dessous et enfin dans Tests j'entre le résultat de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="utf-8"?><feed xml:base="https://[tenant]-6c5eb074fe97db.sharepoint.com/ComplementSharePointtest/_api/" [...]</feed>
    Cependant j'obtiens une erreur. Il y a t'il quelque chose que je fais mal ?
    Nom : postman.png
Affichages : 659
Taille : 35,7 Ko

    Regardez bien l'url de la page qui execute le script...
    Ah oui! En effet! Dans ce cas pour obtenir le bon site, dans mon cas je peux passer par le parent ou le rootweb non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var context = new SP.ClientContext.get_current();        
    var web = context.get_web();                       
    var parentInfo = web.get_parentWeb();  
    var parentWeb = context.get_site().openWebById(parentInfo.get_id());
     
    context.load(parentInfo);
    context.load(parentWeb);
    ou encore plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     var context = SP.ClientContext.get_current();
     var web = context.get_web(); 
     var site = context.get_site();
     var rootWeb = site.get_rootWeb();
    Me trompe-je ?

    Bouton publication dans Napa.
    http://dev.office.com/docs/add-ins/p...-visual-studio
    C'est un poil plus complique de passer par visual studio (quoique), la marche a suivre est egalement indiquee dans ce lien.



    N'utilisez pas le .debugapp pour deployer vers la prod. Cela ne sert - a juste titre - qu'au dev. Il est d'ailleurs interdit par MS de publier des applis en mode debug sur le Store.
    Pour info, il est impossible de deployer deux fois le meme package dans la ferme SharePoint, mais ce qui differencie deux add-ins entre eux c'est le ProductId qui se situe dans le AppManifest.xml.

    En pratique :
    - le debugapp est deploye par l'outil de developpement (VS ou Napa) directement dans le site de developpeur.
    - quand on est pret a publier l'appli, on gere les identifiants oauth (facultatif), on la package (l'IDE s'en charge) et on deploie ce package soit sur le Store (global et public), soit sur l'AppCatalog (local a votre tenant).
    Plus d'infos sur https://msdn.microsoft.com/fr-fr/lib.../fp179933.aspx
    Justement hier soir, j'ai avancé sur le sujet grâce à ce lien.
    A priori ce n'est pas bien compliqué, il suffit d'uploader son .app ou .debugapp (oui oui j'ai testé avec) sur le site app Catalog dans la bibliothèque "applications pour SharePoint". Puis si l'application est validée et installée, on y a accès depuis n'importe quel site à partir de la page "ajouter une application".
    Attention par contre aux écueils suivants qui m'ont un peu embêté quand même :
    - La collection de site ne doit pas déjà contenir l'application. J'avais créé un site via l'interface.
    Nom : creersite.png
Affichages : 619
Taille : 20,2 Ko
    Malheureusement ce raccourci crée un sous-site directement dans la collection du site du développeur (qui contient par défaut les applis à tester)
    - Il faut effacer l'app supprimée de la corbeille ET de la corbeille secondaire. Pour les trouver rapidement :
    • [url du site]/_layouts/15/AdminRecycleBin.aspx?ql=1
    • [url du site]/_layouts/15/AdminRecycleBin.aspx?View=2&ql=1

    En tout cas merci pour les liens, je vais en étudier le contenu. ^^

    Bon courage !
    Merci beaucoup. Je continue mon exploration de Napa

  4. #4
    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
    Il est possible que /_layouts/15/mcontent.aspx cache les listes systèmes, je ne me souviens plus trop. Mieux vaut se fier à l'API, comme d'habitude.


    Concernant le code qui permet d'attaquer le hostweb depuis un add-in, il faut utiliser la classe SP.AppContextSite.
    Cependant en faisant ça vous allez vous heurter au problème des permissions de l'add-in, il vous faudra un peu bosser le sujet sur msdn.
    Plus d'infos:
    https://msdn.microsoft.com/en-us/lib.../mt210457.aspx
    https://msdn.microsoft.com/en-us/lib....aspx#Anchor_9


    Pour Postman et la construction de requêtes REST (header Accept) :
    http://tech.bool.se/basic-rest-reque...using-postman/
    https://www.helloitsliam.com/2016/02...nd-office-365/


    Afin d'éviter de vous prendre les pieds dans le tapis, changez le productid et le nom interne de l'add-in en fonction de l'environnement de déploiement juste avant de publier le package.
    C'est la méthode que j'utilise et ça permet de jouer avec plusieurs builds différents (dev, test, prod) sur un seul et même site hôte (même si c'est mieux de créer un nouveau site par build à installer).
    Il suffit de noter et garder les différentes valeurs quelque part au propre.

    Le coup de la double-suppression est important et nécessaire dans le cas d'une désinstallation propre, à retenir pour la suite car cela corrige plein d'effets de bord.

  5. #5
    Nouveau membre du Club Avatar de kyria
    Femme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études et développement

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Points : 30
    Points
    30
    Par défaut
    Concernant le code qui permet d'attaquer le hostweb depuis un add-in, il faut utiliser la classe SP.AppContextSite.
    Cependant en faisant ça vous allez vous heurter au problème des permissions de l'add-in, il vous faudra un peu bosser le sujet sur msdn.
    J'ai compulsé les deux pages que vous avez fourni et effectivement je suis bloquée avec les permissions. Ce qui est étrange c'est que j'utilise les pistes de ces pages en passant par le SP.AppContextsite. Auriez-vous des idées ?
    Voilà le code que j'utilise :
    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
     
    var context = SP.ClientContext.get_current();
     
    var hostWebURL =decodeURIComponent(getQueryStringParameter("SPHostUrl"))
    var appContextSite = new SP.AppContextSite(context, hostWebURL);
     
    //avec plus loin ma fonction "getQueryStringParameter" :
    function getQueryStringParameter(paramToRetrieve) {
         var params = document.URL.split("?")[1].split("&");
        // var strParams = "";
         for (var i = 0; i < params.length; i = i + 1) {
             var singleParam = params[i].split("=");
             if (singleParam[0] == paramToRetrieve) {
                 return singleParam[1];
            }
         }
     }
     
    //voila pour la fonction qui compte les listes
    function getWebProperties() {
            // Get the number of lists in the root web
    		var webctx = appContextSite.get_web();
    		var listsctx = webctx.get_lists();
            context.load(listsctx);
            context.executeQueryAsync(onWebPropsSuccess, onWebPropsFail);
        }
    Je sens qu'il y a quelque chose qui ne tient pas la route, notamment avec les "context", mais je ne saurais dire quoi :/


    Pour Postman et la construction de requêtes REST (header Accept)
    Pour Postman j'ai du faire une combinaison des deux liens pour réussir à afficher mon résultat. A priori, il faut :
    1. être connecté(e) sur son site SPonline
    2. Télécharger le plug-in interceptor de Postman et l'activer
    3. Entrer dans l'onglet "Head", Accept : application/json; odata = verbose (et non pas sur 2 lignes comme je le faisais auparavant)
    4. s'assurer qu'on est en GET (pour [URL du site]/_api/web/lists?$select=Title)

    et ça marche!

    Il me reste encore à creuser pour l'utilisation de Postman car lorsque je suis le 1er tutoriel, "[URL du site]/_api/contextinfo" en POST ne me renvoi rien du tout...

    Afin d'éviter de vous prendre les pieds dans le tapis, changez le productid et le nom interne de l'add-in en fonction de l'environnement de déploiement juste avant de publier le package.
    Comment fais-t-on cela ? Manuellement ?

  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
    Bonjour,

    Citation Envoyé par kyria Voir le message
    Je sens qu'il y a quelque chose qui ne tient pas la route, notamment avec les "context", mais je ne saurais dire quoi :/
    Quelle est l'erreur renvoyee en parametre de onWebPropsFail?
    Utilisez le debugger du navigateur pour voir le contenu de la requete http et le code/contenu de la reponse.

    Citation Envoyé par kyria Voir le message
    Il me reste encore à creuser pour l'utilisation de Postman car lorsque je suis le 1er tutoriel, "[URL du site]/_api/contextinfo" en POST ne me renvoi rien du tout...
    Pardon ca portait a confusion. Il n'y a pas besoin dans le cas present de passer par une recuperation de jeton car l'operation est un HttpGet (operation en lecture). Contextinfo est utilise dans le cas d'operations en ecriture.
    Details:
    https://msdn.microsoft.com/en-us/lib.../jj164022.aspx
    https://msdn.microsoft.com/en-us/lib.../jj860569.aspx

    Citation Envoyé par kyria Voir le message
    Comment fais-t-on cela ? Manuellement ?
    Oui, pas trop le choix.
    A moins que les dernieres versions de VS ou un petit plugin fasse le job, mais je n'ai aucune idee si ca existe ou pas.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/10/2016, 12h51
  2. [SP-2013] SharePoint Online Office 365 javascrript API
    Par didou000 dans le forum SharePoint
    Réponses: 2
    Dernier message: 25/11/2014, 11h12
  3. [OPENGL] Première application avec Newton Engine
    Par Bakura dans le forum Contribuez
    Réponses: 24
    Dernier message: 11/11/2006, 13h46
  4. [DEBUTANT]Première application avec XML
    Par mlallem dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 17/11/2005, 15h07

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