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

POWER Discussion :

Power Automate Desktop : Vérifier date de modif d'un fichier, extraire les valeurs XML et envoyer un mail


Sujet :

POWER

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut Power Automate Desktop : Vérifier date de modif d'un fichier, extraire les valeurs XML et envoyer un mail
    Bonjour,

    Je débute sur Power Automate (et encore plus sur la version Desktop), j'aimerais bien un (gros) coup de main sur une automatisation qui pourrait nous faire gagner du temps.
    Je précise que je peux me permettre d'attendre quelques jours avant d'avoir une réponse, la deadline est pour le premier semestre 2025 (donc je ne vais pas faire le casse-pieds et relancer pour qu'on me mâche le boulot toutes les 3 heures).

    Je précise le cadre technique en premier, j'exposerai ce que j'ai pu faire et ce qui me gêne par la suite

    Donc je passe par l'application Power Automate Desktop car l'ERP génère des fichiers "en local" (dans le sens pas dans le cloud Microsoft), et je n'ai pas de machine tournant 24/7 avec des ressources suffisantes pour faire tourner la passerelle pour Power Automate version cloud.
    Je contournerai ça en lançant le flux via le planificateur de tâches OU au pire en donnant le flux à la personne qui en aura besoin (avec la bonne licence, ça lui permettra d'envoyer des mails sans devoir les faire).
    Donc ces fichiers générés par l'ERP sont des fichiers XML, comme dit dans le titre, et pour certains de ces fichiers je voudrais les traiter pour (éventuellement) envoyer un mail.

    Première étape (réussie) : l'action Obtenir les fichiers dans le dossier.
    J'ai mis dans le filtre que je ne veux que les fichiers qui correspondent à "BL*" pour ne pas récupérer les 50k+ fichiers du dossier.
    Pour la curiosité technique, j'aimerais bien une confirmation que ça sera plus rapide (puisque ma liste sera divisée par un peu plus de 3) que de récupérer TOUS (les 50k+ donc) les fichiers pour ensuite rentrer dans un for each sur les fichiers récupérés de la liste pour y faire un (premier) If et vérifier que le nom contient "BL" (d'autant plus que la méthode du If serait moins précise, puisque le If cherche dans tout le nom du fichier au lieu de chercher le début du nom). Bref, ce point est un détail, pas besoin de perdre des heures à faire des tests là-dessus.

    Deuxième étape (réussie) : une boucle For each qui va me permettre de vérifier chaque fichier individuellement (on descend à 17k fichiers ).
    Pour la précision, j'ai déjà fait du tri dans le dossier... et pour des raisons fiscales, nous devons garder un peu d'antériorité dans le dossier, donc le prochain tri sera en janvier 2025 (ce qui me permettra potentiellement de supprimer 6k fichiers du dossier).

    Troisième étape (réussie) : une condition If dans laquelle je souhaite vérifier la date de dernière modification du fichier.
    Avant de rentrer dans mon For each (je ne pense pas que l'exécution du script durerait 1h, on n'envoie quand même pas 80 colis par jour), j'ai lancé Obtenir la date et l'heure actuelles (qui me donne CurrentDateTime), puis Ajouter à la valeur DateHeure en ajoutant -24 heures (pour revenir une journée en arrière) à CurrentDateTime, ce qui me donne ResultedDate.
    Puis, dans le for each, j'ai créé ce If qui va contrôler les 17k fichiers concernés pour vérifier si %CurrentItem.LastModified% est supérieure ou égale à ResultedDate.
    Pour me rassurer un peu, je pense que je testerai d'afficher la date de dernière modification dans une pop-up pendant ma phase de tests.

    Quatrième étape (clarification) : récupérer une valeur contenue dans une balise XML.
    Dans le If de la 3eme étape donc (ce qui va donc me permettre de travailler sur 29 fichiers datant des 24 dernières heures, pour réduire le scope), j'ai placé l'action Lire le format XML depuis le fichier CurrentItem, ce qui va me rendre le résultat dans XmlDocument.
    A priori, en utilisant l'action Obtenir la valeur de l'élément XML, il semblerait que j'arrive à récupérer mes valeurs, c'est bien ce que je cherche.
    Mais je me suis basé sur une documentation de chez Microsoft, et j'aimerais bien une clarification quand même.
    Je trouve que la distinction entre obtenir l'attribut et obtenir la valeur est assez floue, si quelqu'un a la patience de m'expliquer en mots simples?
    De même, est-ce que le XPath sert à quelque chose SI on ne va pas chercher des infos dans une balise qui peut avoir des doublons (par exemple dans mon cas je peux avoir plusieurs palettes pour une livraison, mais je ne vais pas prendre d'infos dedans).

    Cinquième étape : pour la confiance, j'ajouterai un If supplémentaire pour vérifier que la date de chargement que j'ai récupérée est bien supérieure ou égale à ResultedDate.
    Je peux comprendre que certains trouveront ça superflu, mais on n'est pas à l'abri qu'un fichier soit régénéré (et donc sa date de dernière modification totalement décalée de la date de chargement), donc je préfère éviter qu'un client reçoive un mail "doublon" des semaines après ou que ça crée un risque de confusion avec une autre commande.

    Sixième étape (échec critique) : envoyer un mail.
    Je suis à l'état "échec critique" pour le moment car j'ai voulu mettre l'instruction Lancer Outlook AVANT la boucle for each (ce qui me paraît logique, je ne vais pas lancer une instance Outlook pour chaque mail envoyé), et en testant j'ai eu un gros message d'erreur du genre "impossible de lancer Outlook".
    Je suppose que c'est parce que j'ai une instance Outlook déjà lancée sur mon PC? J'hésite à utiliser l'action Envoyer l'email dans la catégorie adresse e-mail, mais je ne vois pas à l'heure actuelle comment j'y indique l'utilisateur et le mot de passe du compte mail à utiliser (pourtant ça m'arrangerait d'utiliser un compte Ne pas répondre existant )
    Est-ce que vous avez déjà fait ce genre de connexion depuis l'application Desktop?

    Merci d'avance pour votre aide (et merci aussi juste pour la présence du forum, j'ai plus avancé en 2 heures en écrivant juste mes soucis que sur toute la matinée).

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut
    Bonjour,

    Je me réponds à moi-même, j'ai avancé.
    J'ai trouvé ce tuto en Anglais pour configurer l'envoi d'un email sans passer par Outlook.
    Pour les non-anglophones qui chercheraient la solution, l'astuce consiste à cocher la case "Le serveur STMP requiert une authentification", et là la fenêtre demande de renseigner l'identifiant et le mot de passe du compte mail.

    Mes tests font que je vais devoir récupérer une autre valeur d'attribut et faire un If supplémentaire pour vérifier que c'est bien True AVANT de récupérer ma date de chargement, car je suis tombé sur un cas spécifique de bon de livraison imprimé avant le chargement (qui fait donc que la date de chargement est vide).

    Si mes aventures servent à d'autres, ça m'aidera aussi à me sentir moins bête

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 26
    Par défaut
    J'ai passé le sujet en résolu, je reçois maintenant mes mails de test

    Il ne me reste plus qu'à récupérer les valeurs nécessaires à la personnalisation de l'email, et j'ai déjà la méthode.

    Mes excuses si certain.e.s ont trouvé mes questions triviales ou stupides, mais il faut bien qu'on commence quelque part

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la date de modification d'un fichier
    Par sylviev dans le forum Langage
    Réponses: 1
    Dernier message: 07/08/2007, 10h58
  2. [FTP] date dernière modif d'1 fichier distant
    Par renaudjuif dans le forum Langage
    Réponses: 1
    Dernier message: 24/09/2006, 02h24
  3. Comment trouver la dernière date de modification d'un fichier
    Par je®ome dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/05/2006, 14h23
  4. Réponses: 20
    Dernier message: 17/03/2005, 16h26
  5. [langage] Date de modification d'un fichier
    Par Cyspak dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2003, 16h49

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