Je suis novice en AppleScript et j'ai rencontré ce problème après plusieurs autres problèmes et solutions (voir plus bas pour plus de détails). Mon problème actuel est que je demande à Pages de vérifier si un document est ouvert avec l'option
tell application "Pages"
exists front document
end tell
mais parfois même lorsque Pages a un document ouvert, la mention "existe" est toujours "false". Et en général, il semble que parfois, toute référence à "front document" renvoie des erreurs indiquant qu'il ne peut pas l'obtenir alors qu'il est clairement là. Lorsque je quitte Pages et que j'essaie à nouveau, cela fonctionne généralement... jusqu'à ce que ce ne soit plus le cas.
Des idées ?
Mon problème initial vient du fait que je veux faire une QuickAction pour ouvrir un fichier dans Pages -> exporter en PDF -> fermer Pages -> répéter l'opération si nécessaire. Mais le script prend de l'avance et essaie de terminer l'exportation avant même que le fichier ne soit ouvert.
tell application "Finder"
set theSelection to selection
repeat with oneItem in theSelection
set finderLocation to oneItem as text
open oneItem
tell application "Pages"
set idx to 0
repeat until (exists front document)
set idx to idx + 1
if idx > 2000 then quit
end repeat
set pagesLocation to file of front document as text
repeat until finderLocation = pagesLocation
set pagesLocation to file of front document as text
end repeat
set exportFile to file of front document as text
set exportFile to text 1 thru -6 of exportFile
set exportFile to exportFile & "pdf"
export front document to file exportFile as PDF with properties {image quality:Best}
close front document without saving
end tell
end repeat
end tell
J'ai donc essayé de trouver un moyen de vérifier si le document est ouvert avant de continuer. Et j'ai trouvé ceci, pour vérifier si l'emplacement du fichier frontal du document dans Pages correspond à l'emplacement des fichiers ouverts par Finder. Cela a fonctionné jusqu'à ce que j'essaie à partir d'une nouvelle instance de Pages (quitter Pages d'abord puis essayer). Le problème était que Pages signalait une erreur parce qu'il n'était pas possible de trouver le "document principal" (puisqu'il avait besoin de lire le chemin d'accès au fichier mais que rien n'était encore ouvert).
J'essaie donc maintenant de vérifier si quelque chose est ouvert avant de vérifier si le fichier cible est ouvert. Mais maintenant, comme décrit ci-dessus, il semble que les références à "document" se cassent la figure et provoquent le blocage de "existe" ou de "file of front document".
Suis-je dans la bonne direction ou existe-t-il une meilleure façon de procéder ?
Merci d'avance.
EDIT : maintenant mon script ressemble à ceci, et semble être plus cohérent, du moins jusqu'à présent
tell application "Finder"
set theSelection to selection
repeat with oneItem in theSelection
set nameOfDocument to name of oneItem
open oneItem
tell application "Pages"
repeat until (exists document nameOfDocument)
delay 0.1
end repeat
set exportFile to oneItem as text
set exportFile to text 1 thru -6 of exportFile
set exportFile to exportFile & "pdf"
export document nameOfDocument to file exportFile as PDF with properties {image quality:Best}
close document nameOfDocument without saving
end tell
end repeat
end tell