AppleScript - L'esportazione delle pagine in PDF non funziona a causa delle autorizzazioni di Sandbox

4

Sto provando a creare un flusso di lavoro di Automator per esportare i documenti di Pages selezionati in PDF. Finora, tutto va bene, tranne per la fase di esportazione finale.

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

Questo mi dà un errore di autorizzazioni 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 

Dopo aver letto su di esso qui , sembrava che potessi risolvere il problema cambiando _location in un POSIX file .

Quindi ho aggiunto;

--set _location to (POSIX file _location)

Tuttavia, questo mi dà l'errore:

Le pagine hanno ricevuto un errore: "macOS: Users: brunoscheele: Desktop: Test.pdf" non può essere interpretato come un URL di file.

L'utilizzo di export front document to (POSIX file _location) as PDF mi dà lo stesso errore.

Qualcuno sa come impostare correttamente _location , quindi non si verificano problemi di autorizzazione?

    
posta SpacyRicochet 19.01.2017 - 21:56
fonte

3 risposte

1

Prova ad aggiungere questa riga prima della fase di esportazione:

open for access file _location

Suppongo che tu stia usando macOS Sierra. Questo è un problema noto. Potrei solo far funzionare il mio codice usando il passaggio precedente prima che la mia esportazione iniziasse. Assicurati di non mettere quella linea all'interno di un tellblock.

    
risposta data 18.02.2017 - 00:02
fonte
1

Sei molto vicino. Modifica la tua linea di esportazione in questo modo:

export front document to file _location as PDF

È la parola "file" che ti mancava.

Nota: ho provato di nuovo lo script e non ha funzionato, anche con la parola "file" aggiunta. Tuttavia, durante la sperimentazione ho scoperto che se avessi cambiato questa linea:

set _location to (_directory as string) & _PDFName

a

set _location to (_directory as string) 

allora lo script avrebbe naturalmente un errore. Ma poi, se ho annullato la modifica, la riga è tornata a essere:

set _location to (_directory as string) & _PDFName

la sceneggiatura ha iniziato a funzionare! Sto usando Pages 6.0.5, macOS 10.12.2.

Non posso dire cosa sta causando questo comportamento.

    
risposta data 20.01.2017 - 04:55
fonte
0

Ho avuto un problema simile con una sceneggiatura su cui stavo lavorando. Sembra infatti che siano le autorizzazioni correlate. Il modo in cui l'ho fatto è stato creando il PDF all'interno del pacchetto di file di Pages. Quindi, se il tuo file di Pages è:

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

... quindi crea il tuo PDF in:

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

C'è un esempio di codice del codice in cui mi sono imbattuto in questo problema e un esempio di come l'ho risolto qui:

link

Spero che ti aiuti!

    
risposta data 02.02.2017 - 17:23
fonte

Leggi altre domande sui tag