Requêtes valeurs d’un champs Lookup / Recherche d’une liste Sharepoint

  • Requêtes valeurs d’un champs Lookup / Recherche d’une liste Sharepoint

    Posté par Mick sur 8 janvier 2024 à 13h50

    Bonjour et bonne année,

    Je butte sur une requête me permettant de récupérer l’adresse mail d’une entrée stocké dans une Liste SharePoint lée à la premier via un lookup.

    Je passe en revue les lignes pour déterminer s’il y a des retards de traitement, et si c’est le cas, j’envoie un mail de rappel au destinataire de la demande.

    Je saisie cette ligne dans le corps du mail :

    item()?[‘Destinataire’]

    Ce qui me donne ça : [{“@odata.type”:”#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference”,”Id”:5,”Value”:”adresse@mail.com“}]

    Lorsque je mets cette valeur dans Envoyer un mail outlook V2, ça plante.

    J’ai idée d’essayer d’extraire uniquement la Value. J’ai essayé plein de syntaxe différente, pour moi la plus logique serait :

    • item(‘Appliquer_à_chacun_2’)?[‘Destinataire\Value’]
      Ou à la rigueur :
    • item(‘Appliquer_à_chacun_2’)?[‘Destinataire’]?[‘Value’]

      Mais cela ne fonctionne pas.
      Il y a une subtilité qui m’échappe, pourriez vous me donner une piste svp ?
      Merci d’avance.

    Mick a répondu Il y a 10 mois, 2 semaines 3 Membres · 6 Réponses
  • 6 Réponses
  • Geoffroy

    Membre
    8 janvier 2024 à 15h48

    Bonjour Mick,

    Il y a certainement une manière plus élégante mais une solution possible est d’utiliser la fonction split pour isoler ce qu’il y a entre ”Value”:” et “}]

    • Mick

      Membre
      8 janvier 2024 à 16h30

      Merci du tuyaux, je vais regarder s’il est possible de transformer un tableau, en string.
      Ca ressemble en effet à une usine à gaz. 😉

  • DavidZed

    Membre
    8 janvier 2024 à 20h35

    Hello Mick,

    Le Json de sortie de ta colonne Destinataire est entre [], ça signifie que c’est une colonne qui attend une donnée de type table ( Tu as du cocher l’option multiple values sur ta colonne SP ) et tu lui donnes un record (enregistrement).

    Si c’est une erreur et que ta colonne n’est censé contenir qu’un destinataire, tu peux :

    • Soit modifier les propriétés de ta colonne dans SP
    • Soit récupérer le 1er élément de la table avec l’index [0] ou la fonction first() , exemple : item(‘Appliquer_à_chacun_2’)?[‘Destinataire’][0]?[‘Value’]

    Si ton champ peut effectivement contenir plusieurs destinataires, tu peux concatainer les valeurs de ta table :

    • Soit en utilisant l’action de données Joindre
    • Soit en utilisant la fonction join( TABLE , ‘Séparateur Texte’ ) dans une expression
  • Mick

    Membre
    8 janvier 2024 à 20h48

    Bonjour,

    C’est un choix unique. Mais la description que tu donnes correspond à ce que me dit l’interpréteur. Il demande une index.

    J’aurais jamais trouvé.

    Je vais essayer ça demain.

    Encore merci pour votre aide c’est vraiment super sympa.

    Merci

    Bonne soirée.

  • Mick

    Membre
    9 janvier 2024 à 14h21

    Bonjour,

    Ca fonctionne, cool !
    Si je récapitule, s’agissant d’un tableau, il faut lui préciser l’index de la ligne[0], puis le nom de la colonne[‘Value’].

    S’il y avait eu plusieurs lignes j’aurai pu de la même manière sélectionner la ligne 4 [4] et demander la colonne[‘Value’]. Ou une autre colonne s’il y avait lieu.

    Dit comme ça je comprends bien l’idée. Mais j’ai pas trouvé de tutos ni de vidéo traitant spécifiquement de cela. Je pense que ce doit être un concept de base, bien que pas si évident.

    Merci encore à vous.

  • Mick

    Membre
    11 janvier 2024 à 23h59

    Bonjour,

    J’ai un problème similaire avec un champs lié. Cette fois, je récupère une valeur triggerOutput() qui me donne un tableau du même type que le premier. J’ai besoin de récupérer un chiffre (il me donne 7.000000) mais la formule ne fonctionne pas dans ce cas.

    Est-ce qu’il y a un précis des syntaxes en fonction des types de données quelque part ?

    Je perds beaucoup de temps sur le formatage des données, et je voudrais éviter de venir poser des questions sur le forum pour chaque cas. 😉

    Merci d’avance.

Connectez-vous pour répondre.