Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ apple script iBarcoder

Écrit par : moustikk 26 Dec 2015, 12:30

Bonjour,
J’aimerais pour un projet insérer automatiquement le texte d’un email dans un QR code.

Ce QR code, se trouve dans le logiciel : iBarcoder

Ensuite, exporter le fichier créer par iBarcoder (un pdf), l’insérer dans un email et le retourner à une adresse présente dans le même email que le texte.

J’essaye avec apple script, mais je suis rapidement bloqué.
J’arrive à ouvrir iBarcoder, ouvrir un fichier test que j’ai créer (une page avec un datamatrix au centre) mais je ne trouve pas comment modifier le contenu du datamatrix! en fait je ne trouve pas comment s’appelle la variable.

qq pourrait me guider ?
Merci

Écrit par : PBell 27 Dec 2015, 10:18

Bonjour,
Ce que tu cherches à faire n'est pas simple car l'application iBarcoder n'est pas scriptable.
Cela signifie que le développeur/éditeur de cette application n'a pas prévu qu'elle puisse être commandée par des scripts.

Le seul moyen de lui faire faire des choses est donc de simuler ce que ferait l'utilisateur devant son clavier et sa souris. Cela s'appelle du GUI scripting.
C'est ce que j'ai fait ci-dessous, mais il faut être conscient des limitations de cette méthode :

1) Elle est strictement dépendante de l'interface utilisateur. Je me suis basé sur une version démo de iBarcoder (version 3.7.8). Si, demain, l'éditeur décide de changer le nom des boutons, des zones de texte, et autres éléments graphiques de la fenêtre principale ou leur comportement, le script risque fort de ne plus fonctionner. Il faudra alors l'adapter à la nouvelle interface !

2) Comme le script simule des clicks et appuis sur des touches, tu ne dois rien faire sur ton mac pendant les quelques secondes de ce script. Sinon, le Mac ne fera pas la différence entre tes clicks/touches et ceux venant du script.

Ces mises en garde faites, j'ai donc fait une routine qui reçoit un texte et renvoi un QRcode dans le presse-papier.
Comme l'application Mail est parfaitement scriptable, le reste est plus facile avec une boucle sur chaque email sélectionné qui réponds et colle le QRcode avant d'envoyer le mail.
J'ai supposé que tu voulais traiter tous les mails que tu as sélectionné, puis tu lances le script.

J'ai mis plein (presque trop) de commentaires pour que tu puisse le modifier à ta guise. Tu dois juste copier tout ce texte dans l'éditeur de script et l'enregistrer sous forme d'application (ou même de service via Automator !). Je te laisse cette dernière partie.

Cordialement

CODE
tell application "Mail" to set MesEmails to selection --tous les emails sélectionnés sont traités en boucle
repeat with unMail in MesEmails
    tell application "Mail" to set MonTexte to (content of unMail) as string --lit le texte de l'email
    
    QRCode(MonTexte) -- converti le texte en QRCode dans le presse papier
    
    tell application "Mail"
        activate
        set MonMessage to reply unMail with opening window -- ouvre une fender de réponse au mail
        repeat until name of front window is (subject of MonMessage)
            delay 0.3
        end repeat
        tell application "System Events" to keystroke "v" using {command down} --colle le presse-papier (=QRCode) dans le corps du mail
        send MonMessage -- envoi du message
    end tell
end repeat



on QRCode(TextQR) -- conversion du texte en QR code (comme iBarcoder n'est pas scriptable, on doit passer via l'interface graphique)
    tell application "iBarcoder" to activate
    tell application "System Events"
        tell process "iBarcoder"
            delay 1
            keystroke "a" using {command down} -- selectionne le code barre existant
            delay 1
            -- click on "propriété de codes à barres" si ce n'est pas déjà sélectionné
            if value of checkbox "Propriétés de codes à barres" of scroll area 1 of window 1 = 0 then
                click checkbox "Propriétés de codes à barres" of scroll area 1 of window 1 -- 1 si checked
            end if
            -- défini le sous menu avec le format QRCode, si ce n'est pas déjà fait
            if value of pop up button 1 of scroll area 1 of window 1 is not "QRCode" then
                click pop up button 1 of scroll area 1 of window 1
                --click menu item 32 of menu 1 of pop up button 1 of scroll area 1 of window 1
                click menu item "QRCode" of menu 1 of pop up button 1 of scroll area 1 of window 1
            end if
            -- met le texte choisi dans la zone QR code
            set value of text area 1 of scroll area 2 of scroll area 1 of window 1 to TextQR
            -- copie du QRCode dans le presse-papier
            keystroke "c" using {command down}
        end tell
    end tell
end QRCode

Écrit par : moustikk 27 Dec 2015, 12:08

Bonjour,
merci pour ce coup de main! je vais faire qq essais dans les jours qui viennent et je passerai par ici pour te donner des nouvelles!
Tout est très clair! c’est parfait!
Bonne journée

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)