AppleScript - La exportación de páginas a PDF falla debido a los permisos de Sandbox

4

Estoy intentando crear un flujo de trabajo de Automator para exportar documentos de Pages seleccionados a PDF. Hasta ahora, todo va bien, excepto 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 leer sobre él aquí , parecía que podía arreglar esto cambiando _location a POSIX file .

Así que agregué;

--set _location to (POSIX file _location)

Sin embargo, eso me da el error:

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

El uso de export front document to (POSIX file _location) as PDF me da el mismo error.

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

    
pregunta SpacyRicochet 19.01.2017 - 21:56

3 respuestas

1

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 utilizando el paso anterior antes de que comience mi exportación. Asegúrate de no poner esa línea dentro de un bloque tell.

    
respondido por el PHennessey 18.02.2017 - 00:02
1

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: Intenté el script nuevamente y no funcionó, incluso con la palabra "archivo" agregado. 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, error. Pero luego, si deshizo el cambio, la línea 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.

    
respondido por el Christian Boyce 20.01.2017 - 04:55
0

Tuve un problema similar con un script en el que estaba trabajando. De hecho, parece estar relacionado con los permisos. La forma en que lo resolví fue creando el PDF dentro del paquete de archivos de Pages. Entonces, si tu archivo de Pages está en:

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

... luego crea tu PDF en:

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

Hay un ejemplo de código del código donde me encontré con este problema, y un ejemplo de cómo lo resolví aquí:

enlace

Espero que ayude!

    
respondido por el Lord Stott of Walkington 02.02.2017 - 17:23

Lea otras preguntas en las etiquetas