AppleScript: la exportación de páginas a PDF falla debido a los permisos de Sandbox

Estoy tratando de crear un flujo de trabajo de Automator para exportar documentos seleccionados de Pages a PDF. Hasta ahora, todo va bien, excepto por el paso final de exportación.

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

Esto me da un error de permisos de 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 

Después de leerlo aquí , parecía que podía solucionarlo cambiando _locationa un archivo POSIX file.

Así que agregué;

--set _location to (POSIX file _location)

Sin embargo, eso me da el error:

Las páginas recibieron un error: "macOS:Users:brunoscheele:Desktop:Test.pdf" no se pudo interpretar como una URL de archivo.

Usar export front document to (POSIX file _location) as PDFme da el mismo error.

¿Alguien sabe cómo configurar _locationcorrectamente, para que no tenga problemas de permisos?

Incluya la versión de macOS en su pregunta.
@ChrisPage Lo último, siempre. ¡Pero gracias por participar! Y hubo una respuesta mientras tanto, compruébalo a continuación.

Respuestas (3)

Intente agregar esta línea antes de su paso de exportación:

open for access file _location

Supongo que estás usando macOS Sierra. Este es un problema conocido. Solo pude hacer que mi código funcionara usando el paso anterior antes de que comenzara mi exportación. Asegúrate de no poner esa línea dentro de un bloque de información.

Estás muy cerca. Edite su línea de exportación para que se vea así:

export front document to file _location as PDF

Es la palabra "archivo" que te faltaba.

Nota: probé el script nuevamente y no funcionó, incluso con la palabra "archivo" agregada. Sin embargo, mientras experimentaba descubrí que si cambiaba esta línea:

set _location to (_directory as string) & _PDFName

a

set _location to (_directory as string) 

entonces el script, por supuesto, tendría un error. Pero luego, si deshice el cambio, la línea nuevamente se veía así:

set _location to (_directory as string) & _PDFName

el guión comenzó a funcionar! Estoy usando Pages 6.0.5, macOS 10.12.2.

No puedo decir qué está causando este comportamiento.

¡Gracias por responder! Lamentablemente, eso fue en realidad lo que da los errores de permiso actuales. El guión que pegué originalmente fue después de un par de experimentos, por lo que lo omití accidentalmente. Ver el original actualizado. Parece que es un nuevo error, considerando este tweet; twitter.com/MACAUTOMATION/status/810997383672655872 . ¿Alguna otra idea?
Edité mi respuesta para mostrar cómo hice funcionar el script. Tal vez te funcione de la misma manera.
"no se pudo interpretar como una URL de archivo" en os x 10.2.2 y 10.2.3

Tuve un problema similar con un guión en el que estaba trabajando. De hecho, parece estar relacionado con los permisos. La forma en que lo solucioné fue creando el PDF dentro del paquete de archivos de Pages. Entonces, si su archivo de Pages está en:

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

...entonces crea tu PDF en:

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

Hay una muestra de código del código en el que me encontré con este problema y una muestra de cómo lo resolví aquí:

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

¡Espero que ayude!