Automic Workload Automation

Expand all | Collapse all

Comment transformer le retour d'un SQLI en fichier csv pour l'envoyer en PJ d'un mail ?

  • 1.  Comment transformer le retour d'un SQLI en fichier csv pour l'envoyer en PJ d'un mail ?

    Posted 01-09-2018 04:59 AM

    Bonjour,

    Je cherche à récupérer le contenu d'une variable SQLI afin de pouvoir le joindre à un mail au format csv.

    J'ai bien repéré ces 2 sujets :
    https://community.automic.com/discussion/comment/34170#Comment_34170
    https://community.automic.com/discussion/11091/get-a-notification-when-a-users-password-is-about-to-expire#latest
    mais ils semblent permettre de mettre dans un mail le contenu d'une vara SQLI sous forme de tableau.


    Or mes utilisateurs ont besoin d'une extraction au format csv : nous avons presque 2900 lignes à remonter et le format tableau dans un mail n'est pas des plus judicieux ni pratique.

    Exemple de ce que je récupère par le SQLI :

    pd493n0x5ckg.jpghttps://us.v-cdn.net/5019921/uploads/editor/q3/pd493n0x5ckg.jpg" width="1600">

    Je fouille avec des fonctions comme PREP_PROCESS_VAR pour récupérer le contenu des cellules, mais je sèche sur la création du fichier csv.


    Merci d'avance à ceux qui auraient des idées ou solutions à cette problématique.

     

     



  • 2.  Comment transformer le retour d'un SQLI en fichier csv pour l'envoyer en PJ d'un mail ?

    Posted 01-09-2018 07:24 AM
    Bonjour,

    Bonne et heureuse année 2018 !

    je pense que vu que WRITE_PROCESS fonctionne en mode handle, tu ne pourras pas construire ta chaîne avec PREP_PROCESS_VAR et GET_PROCESS_LINE directement

    tu fait une boucle sur ta vara SQLI et tu prends les champs que tu as besoin, et les écris dans une vara tempo

    Voici un bout de code que j'utilise pour créer un fichier .txt avant d'envoyer par mail et que j'ai adapté à ton besoin

    :SET &HND1# = PREP_PROCESS_VAR("VARA_SQLI.TEST")
    :PROCESS &HND1#
    :   SET &CHAMP1#    = GET_PROCESS_LINE(&HND1#,1)
    :   SET &CHAMP4#    = GET_PROCESS_LINE(&HND1#,4)
    :   SET &CHAMP12#  = GET_PROCESS_LINE(&HND1#,12)
    :   PUT_VAR "VARA_CSV", &CHAMP1#,  &CHAMP4#,  &CHAMP12#
    :ENDPROCESS &HND1#

    Dans la partie constitution de la var temp, tu peut choisir les champs et même faire des condition et des analyses de valeur

    Ensuite tu prend l'ensemble de ta vara tempo et tu créé un fichier csv sur un agent ( unix ou windows, sur l'AE ou un agent normal. Il suffit d'adapter)

    :SET &HND2# = PREP_PROCESS_VAR("VARA_CSV")
    :PROCESS &HND2#
    : SET &RET# = WRITE_PROCESS(&HND2#,"/tmp/indicateur_queue.txt","<agent_sur_AE>","<login>",OVERWRITE)
    :ENDPROCESS &HND2#

    Après tu n'a plus qu'a envoyer le fichier en pièce jointe...

    Hope This Help
    Didier


  • 3.  Comment transformer le retour d'un SQLI en fichier csv pour l'envoyer en PJ d'un mail ?

    Posted 01-09-2018 07:43 AM
    Après tu peut créer un mail au format tableau htm via un call

    Dans l'onglet notification, tu met ton titre et le header de ton document, avec test style et ton formatage
    Dans l'onglet process, tu créer ton tableau à partir de ta VARA.SQL

    Mon exemple viens d'un worfklow qui va vérifier par un jobs.unix que les droits et owner sont ok sur le binaire des agents. les résultats sont écris dans la vara TECHNI.OA##.VARA.QTNU.ONE-AUTOMATION_VERIFICATION_DROITS_AGENTS_RESULTATS

    je fais une boucle dessus, récupère les champs et génère une ligne dans le rapport pour chaque occurrence.

    :SET &ANNEE# = SYS_DATE_PHYSICAL("YYYY","TZ.EUROP")
    :SET &MOIS# = SYS_DATE_PHYSICAL("MM","TZ.EUROP")
    :SET &JOUR# = SYS_DATE_PHYSICAL("DD","TZ.EUROP")

    :SET &TABLEROW# = '<tr><th align="center" BGCOLOR="#ee82ee">Serveur</th><th align="center" BGCOLOR="#ee82ee">Binaire</th><th align="center" BGCOLOR="#ee82ee">Propriétaire</th><th align="center" BGCOLOR="#ee82ee">Droits</th>'
    :PUT_ATT_APPEND CALL_TEXT ='&TABLEROW#'

    :SET &HND# = PREP_PROCESS_VAR(TECHNI.OA##.VARA.QTNU.ONE-AUTOMATION_VERIFICATION_DROITS_AGENTS_RESULTATS)
    :PROCESS &HND#
    :  SET &SRV#            = GET_PROCESS_LINE(&HND#,1)
    :  SET &BINAIRE#   = GET_PROCESS_LINE(&HND#,2)
    :  SET &OWN#         = GET_PROCESS_LINE(&HND#,3)
    :  SET &DROITS#    = GET_PROCESS_LINE(&HND#,4)
    :  IF &OWN# = "KO"
    :    SET &FL1# ="O"
    :    SET &OCOLOR# = "#ff0000"
    :  ELSE
    :    SET &FL1# ="N"
    :    SET &OCOLOR# = "#3cb371"
    :  ENDIF

    :  IF &DROITS# = "KO"
    :    SET &FL2# ="O"
    :    SET &DCOLOR# = "#ff0000"
    :  ELSE
    :    SET &FL2# ="N"
    :    SET &DCOLOR# = "#3cb371"
    :  ENDIF

    :  SET &FLAG# = "&FL1#&FL2#"

    :  IF &FLAG# = "ON" or "NO" or "OO"
    :   SET &TABLEROW# = '<tr><td BGCOLOR="#ffa500">&SRV#</td><td  BGCOLOR="#ffa500">&BINAIRE#</td><td align="center" BGCOLOR="&OCOLOR#">&OWN#</td><td align="center" BGCOLOR="&DCOLOR#">&DROITS#</td>'
    :   PUT_ATT_APPEND CALL_TEXT ='&TABLEROW#'
    :  ENDIF
    :ENDPROCESS

    :SET &TABLEROW# = '</tr></table>'
    :PUT_ATT_APPEND CALL_TEXT ='&TABLEROW#'

    au final, ça donne 

    2j8kg6ft3r1e.jpg
    Dans ce mode d'envoi, attention à la taille finale du mail s'il y à 2900 lignes...il peut y avoir des soucis selon le serveur de mail et le client utilisé pour le lire. Ici je suis sur google mail et si la taille est trop grande il affiche le début et il faut cliquer quelque par pour voir le message en entier

    Pour la solution d'avant avec le .csv , il faudra également faire attention et voir si on ne dépasse pas le SMTP_MAX_ATTACHMENT_SIZE défini dans UC_CLIENT_SETTINGS (max:50000)


  • 4.  Comment transformer le retour d'un SQLI en fichier csv pour l'envoyer en PJ d'un mail ?

    Posted 01-10-2018 04:26 AM
    Hello,

    Bonne année à vous 2 :)
    Tout d'abord bravo à Didier pour sa proposition!!

    Ce plugin disponible sur le Marketplace peut aussi répondre au besoin : il permet de convertir des VARA en csv et vice-versa.

    https://marketplace.automic.com/details/vara2csv-csv2vara

    Cordialement,
    Antoine