2
votes

Passer l'argument à AppleScriptTask

Lorsque je suis passé à MacOS Mojave, je ne pouvais plus enregistrer un document Excel au format PDF dans un emplacement spécifique à l'aide d'une macro.

J'ai dû l'enregistrer dans / Library / Group Containers / UBF8T346G9.Office / â © puis le déplacer vers le bureau en appelant un script stocké dans / Library / Application Scripts / com.microsoft.Excel / .

Cela a fonctionné pendant des mois. Quelqu'un qui utilise cette combinaison macro / script a tout d'un coup été incapable de le faire. Aucun autre utilisateur n'a de problème, certains ayant la même combinaison d'Excel et de MacOS (16.29 et 10.14.6 respectivement).

Quand elle essaie d'exécuter la macro, elle lance

Appel de procédure ou argument non valide (Erreur 5)

spécifiquement sur la ligne qui appelle ce script.

Il y a un autre script au début de la macro qui ne prend pas d'argument et fonctionne. J'ai utilisé MsgBox pour voir quelle chaîne était passée à AppleScriptTask, je l'ai branchée dans le script à l'aide de Script Editor et je l'ai exécutée sans problème.

Voici l'AppleScript:

 result = AppleScriptTask("moveToDesktop.scpt", "ExistsFile", sPath & strJobNumber & " Cover Page.pdf")

Voici l'appel de la macro:

 ExistsFile(sPath)

 on ExistsFile(sPath)

      set sPath to sPath as POSIX file
      tell application "Finder" to set sPath to file sPath
      set dest to (path to desktop)
      move sPath to dest without replacing

 end ExistsFile

J'ai essayé ce qui suit sur la base de ce que j'ai vu sur d'autres forums:

  • Définissez le nom de fichier sur une variable et passez-le à AppleScriptTask
  • Suppression de l'extension dans le script, suppression de l'extension dans le dossier et combinaisons de ces deux


3 commentaires

rondebruin.nl/mac/applescripttask.htm fournit du vba-code pour copier le script vers l'emplacement (attention, vous devez le copier une fois manuellement!) - Vous avez redémarré après la copie du script?


Peut-être que le chemin est incorrect, voir stackoverflow.com/a/46697372/9439330 . Là /Users/username/Library/Application Scripts/com.microsoft.Excel est le chemin.


Supprimez la première ligne de script ( gestionnaire d'exécution implicite , qui exécute «ExistsFile sans sPath Argument). Et donnez-lui un nom correct (par exemple CopyFileToDesktop). Si cela n'aide pas, utilisez un Error-Hanfler .


3 Réponses :


1
votes

On dirait que cela pourrait être une erreur d'autorisations s'il ne s'exécute pas pour un seul utilisateur. Cette page contient toutes les conditions requises pour exécuter la commande AppleScriptTask . La solution possible pourrait être d'activer les autorisations appropriées pour que le script s'exécute à l'aide de la commande chmod partir du terminal. Cela donnera la permission à l'utilisateur root et actuel. Si cela ne fonctionne pas, vérifiez que toutes les exigences sont remplies sur le système de l'utilisateur.

cd <path to script file>
sudo chmod 755 moveToDesktop.scpt


2 commentaires

Y a-t-il un fichier journal, on peut vérifier les messages d'erreur?


Peut vérifier dans le journal système de l'application console les messages d'erreur.



1
votes

Dans MacOS Mojave et plus récent, vous devrez effectuer les opérations suivantes:

Ouvrez les Préférences Système - Sécurité et Confidentialité - Onglet Confidentialité - Automatisation - Excel ~ cochez Finder.


0 commentaires

0
votes

Ce sont les espaces dans les paramètres que vous passez à AppleScript. Vous en avez au moins un avant "Cover Letter.pdf" (puis un entre "Cover" et "Letter"), probablement dans d'autres cellules que vous utilisez pour créer le paramètre. J'avais le même problème et cela me rendait fou que l'AppleScript lui-même fonctionnait bien en lui donnant directement le paramètre combiné.


0 commentaires