AppleScript – Seitenexport in PDF schlägt aufgrund von Sandbox-Berechtigungen fehl

Ich versuche, einen Automator-Workflow zu erstellen, um ausgewählte Pages-Dokumente in PDF zu exportieren. Bisher läuft alles gut, bis auf den letzten Exportschritt.

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

Dies gibt mir einen Sandbox-Berechtigungsfehler.

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

Nachdem ich hier darüber nachgelesen hatte , sah es so aus, als könnte ich dies beheben, indem ich _locationzu a ändere POSIX file.

Also fügte ich hinzu;

--set _location to (POSIX file _location)

Allerdings bringt mir das dann den Fehler:

Seiten haben einen Fehler erhalten: „macOS:Users:brunoscheele:Desktop:Test.pdf“ konnte nicht als Datei-URL interpretiert werden.

Die Verwendung export front document to (POSIX file _location) as PDFgibt mir den gleichen Fehler.

Weiß jemand, wie man das _locationrichtig einstellt, damit Sie nicht auf Berechtigungsprobleme stoßen?

Bitte geben Sie die macOS-Version in Ihrer Frage an.
@ChrisPage Immer das Neueste. Aber danke fürs Mitmachen! Und es gab in der Zwischenzeit eine Antwort, siehe unten.

Antworten (3)

Versuchen Sie, diese Zeile vor Ihrem Exportschritt hinzuzufügen:

open for access file _location

Ich vermute, du verwendest macOS Sierra. Dies ist ein bekanntes Problem. Ich konnte meinen Code nur mit dem obigen Schritt zum Laufen bringen, bevor mein Export begann. Stellen Sie sicher, dass Sie diese Zeile nicht in einen Tell-Block einfügen.

Du bist ganz in der Nähe. Bearbeiten Sie Ihre Exportzeile so, dass sie folgendermaßen aussieht:

export front document to file _location as PDF

Es ist das Wort "Datei", das Ihnen gefehlt hat.

Hinweis: Ich habe das Skript erneut ausprobiert und es hat nicht funktioniert, auch wenn das Wort "Datei" hinzugefügt wurde. Beim Experimentieren habe ich jedoch festgestellt, dass, wenn ich diese Zeile geändert habe:

set _location to (_directory as string) & _PDFName

Zu

set _location to (_directory as string) 

dann wäre das script natürlich fehlerfrei. Aber wenn ich die Änderung rückgängig gemacht habe, sah die Zeile wieder so aus:

set _location to (_directory as string) & _PDFName

Das Skript begann zu arbeiten! Ich verwende Pages 6.0.5, macOS 10.12.2.

Woran dieses Verhalten liegt, kann ich nicht sagen.

Danke für die Antwort! Leider war dies eigentlich der Grund für die aktuellen Berechtigungsfehler. Das Skript, das ich ursprünglich eingefügt habe, war nach ein paar Experimenten, weshalb ich es versehentlich weggelassen habe. Siehe das aktualisierte Original. Sieht so aus, als wäre es ein neuer Fehler, wenn man diesen Tweet betrachtet; twitter.com/MACAUTOMATION/status/810997383672655872 . Irgendwelche anderen Erkenntnisse?
Ich habe meine Antwort bearbeitet, um zu zeigen, wie ich das Skript zum Laufen gebracht habe. Vielleicht funktioniert es bei dir genauso.
„Konnte nicht als Datei-URL interpretiert werden“ unter OS x 10.2.2 und 10.2.3

Ich hatte ein ähnliches Problem mit einem Skript, an dem ich arbeitete. Es scheint tatsächlich an Berechtigungen zu liegen. Ich habe es umgehen können, indem ich das PDF im Pages-Dateipaket erstellt habe. Also, wenn sich Ihre Pages-Datei unter:

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

...dann erstellen Sie Ihr PDF unter:

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

Es gibt ein Codebeispiel des Codes, in dem ich auf dieses Problem gestoßen bin, und ein Beispiel, wie ich es hier gelöst habe:

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

Hoffentlich hilft das!