3 votos

¿Cómo puedo evitar relacionados con el permiso errores al importar en las Fotos.aplicación a través de AppleScript?

Las nuevas Fotos.la aplicación no viene con Automator apoyo (aunque hay acciones de terceros disponibles). Lo hace, sin embargo, tienen alguna soporte para AppleScript, incluyendo soporte para la importación de una lista de archivos.

AppleScript Dictionary

Sin embargo, yo no puedo conseguir esta acción para que funcione correctamente. Cualquier intento de usar, tales como a través de la siguiente secuencia de comandos simple

tell application "Photos"
    set theList to {"/Full/Path/To/Some/Photo.jpg"}
    import theList
end tell

será causa de Fotos.aplicación para informar de que "no hay metadatos" podría ser recuperados desde el archivo porque no puede ser una foto (sin embargo, el mismo archivo puede ser manualmente importados). Más investigación revela que el método automatizado está fallando debido a la falta de permiso para leer el archivo.

Desde la Consola.aplicación:

4/11/15 9:07:49.333 AM sandboxd[253]: ([3934]) Photos(3934) deny file-read-data /Full/Path/To/Some/Photo.jpg

(seguido por una serie de mensajes de error similares). La de terceros, acciones de Automator he enlazado más arriba tenemos el mismo problema, por lo que vale la pena.

¿Cómo puedo dar el permiso correspondiente para las Fotos.de la aplicación o la ejecución de AppleScript/Automatización de flujo de trabajo para realizar esta importación? Tenga en cuenta que el "permiso" parece ser algo distinto de (o además de) la costumbre de los permisos de archivo, ya que al establecer el archivo y la carpeta de "lectura/escritura de por todo el mundo" (la opción nuclear) no cambia el comportamiento.

2voto

Tetsujin Puntos 23061

Basado en esto a partir de una antigua Applescript Notas de la Versión en sandboxing...

Cuando el envío de comandos a un espacio aislado de la aplicación, tales como TextEdit en OS X Mountain Lion, los parámetros que hacen referencia a los archivos deben ser de un explícito de archivo como tipo y no de una simple cadena, o el objetivo de la aplicación no será capaz de acceder al archivo. Por ejemplo, el archivo "Macintosh HD:Users:me:sample.txt", POSIX archivo "/Users/me/sample.txt" o el resultado de elegir el archivo de todo ser aceptable, pero la cadena "/Users/me/sample.txt" no lo haría.

y

Nota: Como se menciona en la Compatibilidad de arriba, espacio aislado de las aplicaciones no serán capaces de acceder a los expedientes a que se refiere comandos de uso de una cadena de ruta de acceso. Los parámetros o propiedades en la aplicación que hacen referencia a los archivos debe ser declarado como tipo de archivo, y no al tipo de texto. Administrador de Eventos de Apple agregará sandbox extensiones de los eventos que han de archivos como parámetros, pero sólo si el parámetro es un reconocimiento de un archivo como tipo: typeAlias, typeFileURL, cFile, y así sucesivamente. Sin estas extensiones, el archivo no será accesible desde la aplicación de destino de la caja de arena, y el comando probablemente no.

Parece que la 'revisión' es el uso de POSIX file para evitar el sandbox problema

Después de algunos martillar en cómo hacer Applescript trabajo con POISIX file de una lista, se me ocurrió esto...

ajustado

set theList to {"/Volumes/Downloads/ScreenShot.png", "/Volumes/Downloads/ScreenShot2.png", "/Volumes/Downloads/ScreenShot3.png"}
set l to {}
repeat with f in theList
    set l to l & (POSIX file f)
end repeat
tell application "Photos" to import l

No es perfecto, como todos los de importación es una nueva, pero funciona.
Ahora trabaja en una importación.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X