AppleScript non fornisce alcun errore di autorizzazione nel tentativo di aprire il file, ma il file può essere aperto manualmente

1

Ricevo il seguente errore quando tento di accedere a diversi file in un AppleScript. Tuttavia, posso aprire manualmente questi file senza problemi.

The document [filename] could not be opened. You don't have permission.

Ho tentato quanto segue:

  • Autorizzazione modificata manualmente tramite File → Ottieni informazioni
  • Utilità disco utilizzata per "Verifica" e "Autorizzazioni di riparazione"
  • Riavviato in modalità di ripristino per ripristinare i permessi e gli accessi alla directory home

Continuo ad avere il problema.

Per aggiungere ulteriore frustrazione, i file non riportano in modo coerente l'errore. A volte avrò l'errore su un file quando eseguo lo script, ma non la prossima volta!

Perché potrei ricevere questo errore di autorizzazione e in quale altro modo posso indirizzarlo?

AppleScript sotto, se aiuta:

-- prompt for source directory
set srcDirectory to (choose folder)

-- get list of all files in source directory
set allFiles to (list folder srcDirectory without invisibles)

tell application "OmniGraffle"
    -- create a new document
    set newDocument to (make new document with properties {template:"Single Pixel Grid"})

    -- added for debug purposes
    delay 5

    -- get a reference to the first layer
    set destinationLayer to first layer in first canvas of newDocument

    -- step through each of the file
    repeat with currentFile in allFiles
        -- get a reference to the next file
        set srcFileString to (srcDirectory as string) & currentFile
        set srcFileRef to (open srcFileString)

        -- get a reference to the icon
        set srcGraphic to first graphic in first layer in first canvas of srcFileRef

        -- flip the icon (they're all upside down)
        flip srcGraphic over vertically

        -- copy the updated source to destination canvas
        duplicate srcGraphic to destinationLayer

        -- close the source file
        close srcFileRef saving no

        -- added for debug purposes
        delay 5
    end repeat

end tell
    
posta Evil Closet Monkey 03.03.2014 - 08:18
fonte

1 risposta

4

Questo problema è causato dalla sandbox delle applicazioni di Apple (in questo caso OmniGraffle). L'anteprima non riceve l'autorizzazione ad accedere al PDF se si passa semplicemente una stringa per aprire. Da Note sulla versione di Apple :

Compatibility Notes

When sending commands to a sandboxed application, such as TextEdit in OS X Mountain Lion, parameters that refer to files must be of an explicit file-like type and not a bare string, or the target application will not be able to access the file. For example, file "Macintosh HD:Users:me:sample.txt", POSIX file "/Users/me/sample.txt", or the result of choose file would all be acceptable, but the string "/Users/me/sample.txt" would not.

Perché a volte funziona? Quando apri un file manualmente, l'applicazione conserva la titolarità per aprirla (in Recenti, per esempio). Pertanto, se provi qualche file che hai già aperto, è probabile che funzioni, ma non funzionerà sui nuovi file.

Per risolvere il problema, modifica il codice da leggere:

...
    set srcFileRef to (open POSIX file srcFileString)
...
    
risposta data 31.12.2014 - 22:18
fonte

Leggi altre domande sui tag