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 _location
zu 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 PDF
gibt mir den gleichen Fehler.
Weiß jemand, wie man das _location
richtig einstellt, damit Sie nicht auf Berechtigungsprobleme stoßen?
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.
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!
Chris Page
SpacyRicochet