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

AppleScript Discussion :

Appeler une routine dans un script [AppleScript]


Sujet :

AppleScript

  1. #1
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Points : 52
    Points
    52
    Par défaut Appeler une routine dans un script
    Bonjour,

    Je viens de nouveau chercher de l'aide sur le forum et j'en suis désolé.

    J'ai placé les lignes d'impression du mail dans une routine afin de pouvoir l'appeler à partir de plusieurs scripts.

    La routine se présente ainsi. Je l'ai compilée. Je l'ai enregistrée sous "Catherine:Usersrogrammes:Imprimer"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    on Impression()
    	tell application "System Events"
    		keystroke "p" using {command down}
    		delay 0.5
    		keystroke tab
    		keystroke tab
    		delay 0.25
    		keystroke "1"
    		delay 0.25
    		keystroke return
    	end tell
    end Impression
    Voici les instruction qui appellent la routine dans les scripts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tell application "Mail"
    	activate
    	-- lignes de création du courrier dans Mail.
    	send courrier
    	delay 1
    	set Imp to load script "Catherine:Users:Programmes:Imprimer"
    	tell Imp
    		my Impression()
    	end tell
    end tell
    Quand je l'exécution du script, je reçois ce message
    error "Erreur dans Mail*: Il est impossible de rendre \"Catherine:Usersrogrammes:Imprimer\" en type file." number -1700 from "Catherine:Usersrogrammes:Imprimer" to file

    Je ne vois pas l'erreur que j'ai faite. J'utilise 10.9.4
    L'un d'entre vous pourrait-il venir à l'aide.

    Cordialement

    jf Zuinghedau.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour Jefmonde,
    Ta ligne 6 doit être corrigée en ajoutant le mot "file", pour convertir ton chemin en type file, et le fichier "Imprimer" doit être complété par son extension qui doit être ".scpt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Imp to load script file "Catherine:Users:Locatif:Programmes:Imprimer.scpt"
    Bonne journée

  3. #3
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Bonjour PBell

    Merci pour ta réponse matinale.
    Je marquerai bien la discussion comme résolue ... ;
    si je n'ai pas encore besoin de ton aide, pour répondre un dernier message d'erreur (le script a été compilé)

    error "«script» ne comprend pas le message «*impression*»." number -1708 from «script»


    Puis-je également revenir sur une de tes réponses. Tu donnes les lignes de programme pour déployer le dialogue d'impression au cas où il ne l'était pas. Je rappelle les instructions que tu a donné ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tell application process "Mail" to tell sheet 1 of front window
    -- test si le dialogue d'impression est déployé. Si non, click pour le déployer
            if (accessibility description of checkbox 1 is "Déploiement de la zone de dialogue Imprimer") and (value of checkbox 1 = 0) then
    click checkbox 1
            end if
        end tell
    Quand j'exécute le script, le dialogue d'impression non déployé, rien ne se passe, mais aucun message d'erreur.

    J'espère ne pas trop abusé de ta disponibilité.

    Bonne journée. Cordialement

    jf Zuinghedau

  4. #4
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    J'ai trouvé l'erreur de syntaxe pour la première question.
    Dans le code qui appelle la routine pour impression des e-mails, ligne 8 du script appelant, il faut retirer my qui ne s'emploi qu'à l'intérieur d'un bloc Tell application.

    L'appel de la routine "Imprimer" s'écrit comme ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set Imp to load script "Catherine:Users:Programmes:Imprimer"
    	tell Imp
    		Impression()
    	end tell
    Bon, reste la deuxième question dont l'erreur de syntaxe reste une énigme pour moi.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir Jefmonde,
    Dans la recopie de mon script, tu as juste oublié qu'il était inséré dans un bloc tell "System Event"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tell application "System Events"    
    tell application process "Mail" to tell sheet 1 of front window
    -- test si le dialogue d'impression est déployé. Si non, click pour le déployer
            if (accessibility description of checkbox 1 is "Déploiement de la zone de dialogue Imprimer") and (value of checkbox 1 = 0) then
    clickcheckbox 1
            end if
        end tell
        
    end tell
    Il est vrai que c'était noyé dans le code global

    Cordialement

  6. #6
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Réunion

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Merci PBell pour cette Unième précision.
    Toutefois avec Mavericks rien ne se passait, mais rien ne se bloquait. J'ai donc cherché encore.

    J'ai écris ce script à partir de ton script et de cette adresse
    http://n8henrie.com/2013/03/a-strate...n-applescript/
    et je l'ai lancé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tell application "System Events" to tell process "Mail"
    	set frontmost to true
    	keystroke "p" using {command down}
    	delay 1
    	tell sheet 1 of front window
    		UI éléments
            end tell
    end tell
    J'ai obtenu dans la fenêtre "Résultat" le détail de la composition de la page où j'ai relevé cette info :
    button "Afficher les détails" of sheet 1 of window "Re: Info Express" of application process "Mail" of application "System Events"

    J'ai donc modifier le script principal ainsi :
    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
     
    tell application "Mail"
    	activate
    	-- les instructions pour composer le courrier
    		delay 1
    	tell application "System Events"
    		keystroke "p" using {command down}
    		delay 0.25
    		tell process "Mail" to tell sheet 1 of front window
    			if exists button ("Afficher les détails") then
    				click button ("Afficher les détails")
    			end if
    		end tell
            -- les instructions pour choisir des options d'impression et lancer l'impression
            end tell
    end tell
    qui fonctionne chez moi

    Voilà, j'ai fini par arriver à imprimer quelque soit l'état initial de la fenêtre "Imprimer" de Mail, avec ton aide.

    Je te remercie infiniment pour ton dévouement et ton suivi.

    jf Zuinghedau

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

Discussions similaires

  1. [Free Pascal] Appeler une fonction dans un script Lua
    Par Roland Chastain dans le forum Free Pascal
    Réponses: 4
    Dernier message: 08/02/2015, 11h55
  2. Appel d'une routine dans une étape DATA
    Par jobvince dans le forum SAS Base
    Réponses: 9
    Dernier message: 17/09/2012, 17h51
  3. Appel d'une sous routine dans autre script
    Par tnarol dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2009, 16h38
  4. [JS] Appeler une fonction dans un script externe
    Par agent007se dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/03/2007, 12h30
  5. appeller une Vue dans un Select
    Par DR. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/12/2004, 16h59

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