4 votes

AppleScript - L'exportation de pages vers le PDF échoue en raison des autorisations Sandbox

J'essaie de créer un flux de travail Automator pour exporter des documents Pages sélectionnés au format PDF. Jusqu'à présent, tout se passe bien, sauf l'étape finale d'exportation.

on run {input, parameters}
    repeat with _document in input

        tell application "Finder"
            set _directory to get container of file _document

            set _documentName to name of _document
            if _documentName ends with ".pages" then ¬
                set _documentName to text 1 thru -7 of _documentName

            set _PDFName to _documentName & ".pdf"
            set _incrementIndex to 1
            repeat until not (exists file _PDFName of _directory)
                set _PDFName to ¬
                    _documentName & "-" & (_incrementIndex as string) & ".pdf"
                set _incrementIndex to _incrementIndex + 1
            end repeat

            set _location to (_directory as string) & _PDFName
        end tell

        --set _location to (POSIX file of _location)

        tell application "Pages"

            activate
            open _document

            with timeout of 1200 seconds
                export front document to file _location as PDF
            end timeout

            close front document

        end tell

    end repeat
    return input
end run

Cela me donne une erreur de permissions Sandbox.

error   17:49:38.117966 +0100   sandboxd    SandboxViolation: Pages(3846) deny file-write-create /Users/brunoscheele/Desktop/Test.pdf
Violation:       deny file-write-create 

Après avoir lu sur le sujet aquí il semblait que je pouvais résoudre ce problème en changeant _location à un POSIX file .

Alors j'ai ajouté ;

--set _location to (POSIX file _location)

Cependant, cela me donne alors l'erreur :

Les pages ont une erreur : "MacOS:Users:brunoscheele:Desktop:Test.pdf" n'a pas pu être interprété comme une URL de fichier.

Utilisation de export front document to (POSIX file _location) as PDF me donne la même erreur.

Quelqu'un sait-il comment régler le _location correctement, afin de ne pas rencontrer de problèmes d'autorisation ?

1voto

Christian Boyce Points 1052

Vous êtes très proche. Modifiez votre ligne d'exportation pour qu'elle ressemble à ceci :

export front document to file _location as PDF

C'est le mot "dossier" qui vous manquait.

Note : J'ai réessayé le script et cela n'a pas fonctionné, même en ajoutant le mot "file". Cependant, en expérimentant, j'ai trouvé que si je changeais cette ligne :

set _location to (_directory as string) & _PDFName

à

set _location to (_directory as string) 

alors le script serait bien sûr en erreur. Mais ensuite, si j'annulais le changement, alors la ligne ressemblait à nouveau à ceci :

set _location to (_directory as string) & _PDFName

le script a commencé à fonctionner ! J'utilise Pages 6.0.5, MacOS 10.12.2.

Je ne peux pas dire ce qui cause ce comportement.

1voto

noobishguy Points 11

Essayez d'ajouter cette ligne avant votre étape d'exportation :

open for access file _location

Je suppose que vous utilisez MacOS Sierra. C'est un problème connu. Je n'ai pu faire fonctionner mon code qu'en utilisant l'étape ci-dessus avant que mon exportation ne commence. Assurez-vous que vous ne mettez pas cette ligne à l'intérieur d'un bloc tell.

0voto

Tobias Strebitzer Points 165

J'ai eu un problème similaire avec un script sur lequel je travaillais. Il semble en effet que ce soit lié aux permissions. La façon dont je l'ai contourné était de créer le PDF à l'intérieur du paquet de fichiers Pages. Donc, si votre fichier Pages est à :

Macintosh HD:Users:Admin:Desktop:myfile.pages

...puis créez votre PDF à :

Macintosh HD:Users:Admin:Desktop:myfile.pages:myfile.pdf

Il y a un échantillon du code où j'ai rencontré ce problème, et un échantillon de la façon dont je l'ai résolu ici :

https://www.ghostotter.com/using-automator-convert-pages-pdf/

J'espère que cela vous aidera !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X