AppleScript no da ningún error de permiso al intentar abrir el archivo, pero el archivo se puede abrir manualmente

1

Recibo el siguiente error al intentar acceder a varios archivos en un AppleScript. Sin embargo, puedo abrir estos archivos manualmente sin problema.

  

No se pudo abrir el documento [nombre de archivo]. No tienes permiso.

He intentado lo siguiente:

  • Permiso modificado manualmente a través de Archivo → Obtener información
  • Usó la Utilidad de Disco para "Verificar" y "Reparar Permisos"
  • Se reinició en modo de recuperación para restablecer los permisos y acls del directorio de inicio

Sigo teniendo el problema.

Para agregar más frustración, los archivos no informan constantemente el error. Algunas veces obtendré el error en un archivo cuando ejecuto el script, ¡pero no la próxima vez!

¿Por qué podría estar recibiendo este error de permisos y de qué otra manera podría solucionarlo?

AppleScript a continuación, si ayuda:

-- 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
    
pregunta Evil Closet Monkey 03.03.2014 - 08:18

1 respuesta

4

Este problema se debe a la utilización de las aplicaciones en la caja de arena de Apple (en este caso, OmniGraffle). La vista previa no recibe un derecho de acceso al PDF si solo le pasa una cadena para abrir. De Notas de la versión de Apple :

  

Notas de compatibilidad

     

Al enviar comandos a una aplicación de espacio aislado, como TextEdit en OS X Mountain Lion, los parámetros que se refieren a archivos deben ser de un tipo explícito de archivo y no una cadena simple, o la aplicación de destino no podrá acceder el archivo. Por ejemplo, el archivo "Macintosh HD: Users: me: sample.txt", el archivo POSIX "/Users/me/sample.txt", o el resultado de elegir el archivo serían todos aceptables, pero la cadena "/ Users / me / sample.txt "no lo haría.

¿Por qué a veces esto funciona? Cuando abre un archivo manualmente, la aplicación retiene el derecho de abrirlo (en Recientes, por ejemplo). Por lo tanto, si intentas cualquier archivo que ya hayas abierto, es probable que funcione, pero no funcionará en nuevos archivos.

Para corregir, cambia tu código para que lea:

...
    set srcFileRef to (open POSIX file srcFileString)
...
    
respondido por el Alan Shutko 31.12.2014 - 22:18

Lea otras preguntas en las etiquetas