Droplet Applescript d'action Finder qui ne fonctionne plus sous Mojave - J'ai vraiment besoin d'aide

PO_

Membre expert
Club iGen
29 Avril 2008
1 719
125
62
Biscarrosse (Landes)
Bonjour à tous,

Il y a quelques années, un contributeur de ce forum m'a concocté un Apple script que j'utilise depuis, quasiment tous les jours sous la forme d'un droplet inséré dans la barre d'outils des fenêtres Finder.

Ce script permet, à partir d'un fichier donné, de transférer ce fichier dans un dossier portant le même nom que le fichier.

en voici le code
Bloc de code:
on open fileList
    tell application "Finder"
        repeat with i in fileList
            set ext to " ." & name extension of i
            set n to do shell script "basename " & ¬
                quoted form of POSIX path of i & ext
            set f to make new folder at (container of i) ¬
                with properties {name:n}
            move i to f
        end repeat
    end tell
end open

J'ai fait hier la mise à jour 10.14 Mojave, en ayant sauté la 10.13, j'ai la mauvaise surprise de constater que ce script, ne fonctionne plus dans la dernière version de l'OS ; j'obtiens la fenêtre d'erreur suivante :

"Non autorisé à envoyer des évènements à Finder

Non autorisé à envoyer des évènements Apple à Finder. (-1743)"

Je suis vraiment embêté car j'utilise énormément ce script. Si quelqu'un pouvait me dire ce qui coince, j'en serais vraiment très reconnaissant.
 
Dernière édition:
Bonjour,

Je n'ai pas encore installé Mojave.
Mais j'essaierai d'aller dans préférences système --> Sécurité et confidentialité --> Onglet confidentialité, dans la colonne de gauche --> Accessibilité, dans la fenêtre de droite cocher Editeur de script .

Cela devrait autoriser les Applescripts à accéder au finder et au système (pour pouvoir exécuter la commande (do shell script).
 
Tu as bien cocher Editeur de script dans les préférences système ?
Copie ecran.webp
 
Ton script est enregistré en tant qu'application pour être un droplet, donc c'est lui qu'il faut autoriser dans les préférences système.

En appuyant sur le + et en sélectionnant ton droplet.

Je pense que ça doit être ça, sinon ... je peux pas tester (sur Hight sierra ton script fonctionne chez moi). Ou le réécrire sans commande shell, uniquement en applescript, (à essayer)
 
Au cas ou ce serait la commande "do shell script" qui bloque, tu peux essayer le script ci-dessous, qui fait la même chose sans commande shell.
Il faut l'enregistrer en temps qu'application.
en espérant que . j'attends le résultat de tes test !

Bloc de code:
on open fileList
    tell application "Finder"
        repeat with i in fileList
            set ext to "." & name extension of i
            set nom to name of i as string
            set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
            set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
            set elements to text items of nom
            set n to (items 1 thru -2 of elements) as string
            set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
            set f to make new folder at (container of i) with properties {name:n}
            move i to f
        end repeat
    end tell
end open
 
Yesssssss ! ! !

Ça marche.

Ça m'a demandé l'autorisation pour que cette application contrôle le finder. et après, ça a fonctionné.

Par contre, très bizarrement, en ayant simplement copié le code dans le droplet précédent, j'avais eu la même erreur.

EN ayant créé une nouvelle application ça a fonctionné après que j'aie donné l'autorisation.

Mille mercis à toi.
 
Ok content pour toi !
 

Bonjour

J'ai un problème similaire... pourriez vous m'aider?

Ce scripte est sensé ouvrir FaceTime et composer un numéro de téléphone sans mon aide. Malheureusement il ne valide pas le bouton "Call" ou "Appeler" et reste sur la fenêtre ouverte de FaceTime . Si j'appuie manuellement ça fonctionne.


Merci d'avance.

Voici mon script :

set phone_num to "0750393857"
do shell script "open facetime://" & quoted form of phone_num
tell application "System Events"
repeat until (button "Call" of window 1 of application process "FaceTime" exists)
delay 1
end repeat
click button "Call" of window 1 of application process "FaceTime"
end tell