¿Cómo puedo evitar errores relacionados con permissions al importar en Photos.app a través de AppleScript?

Las nuevas Photos.app no ​​vienen con soporte de Automator (aunque hay acciones de terceros disponibles) . Sin embargo, tiene un soporte básico de AppleScript, incluido el soporte para importar una list de files.

Diccionario AppleScript

  • AppleScript: ¿Cómo get time sin segundos? Alternativamente, ¿cómo eliminar el text en medio de la cadena?
  • Cómo hacer que la tecla "AvPág" del keyboard se mueva solo la mitad de la distancia, como de costumbre
  • Vista de la list de buscadores, cambiar la columna por la óptima con el uso de AppleScript
  • Un atajo para combinar todas las windows en macOS Sierra
  • ¿Por qué este AppleScript no ajusta realmente el volumen de input a cero?
  • En OSX, ¿cuál es el command opuesto para "decir", es decir, qué command hay para el reconocimiento de voz?
  • Sin embargo, no puedo hacer que esta acción funcione correctamente. Cualquier bash de usarlo, como a través del siguiente script simple

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

    hará que Photos.app informe que "ningún metadato" se pudo recuperar del file porque puede no ser una foto (sin embargo, el mismo file puede importarse manualmente ). La investigación adicional revela que el enfoque automático está fallando debido a la falta de permiso para leer el file .

    Desde Console.app:

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

    (seguido de una serie de posts de error similares). Las acciones de Automator de terceros que he vinculado anteriormente tienen el mismo problema, por lo que vale.

    ¿Cómo puedo otorgar el permiso correspondiente a Photos.app o ejecutar el flujo de trabajo de AppleScript / Automatización para realizar esta import? Tenga en count que el "permiso" parece ser distinto de (o además de) los permissions de file habituales, ya que configurar el file y la carpeta para "leer / escribir de todos" (la opción nuclear) no cambia el comportamiento.

  • ¿Cuál es el mínimo "retraso" en AppleScript?
  • Cómo depurar el error de AppleScript: "esperado" *) "pero se encontró el final del script".
  • AppleScript: ¿Cómo abrir un file de text y mover el cursor a una location específica (señalada por un carácter específico)?
  • ¿Puede OS X automatizar la creación de recordatorios desde una página en un browser web?
  • Applescript: "no se puede get el grupo de tabs 1 de la window" (El Capitan)
  • AppleScript vs. Bash script?
  • 2 Solutions collect form web for “¿Cómo puedo evitar errores relacionados con permissions al importar en Photos.app a través de AppleScript?”

    Basado en esto de una antigua Applescript Release Notes sobre sandboxing …

    Al enviar commands a una aplicación de espacio aislado, como TextEdit en OS X Mountain Lion, los parameters que hacen reference a los files deben ser de tipo file explícito y no una cadena vacía, o la aplicación de destino no podrá acceder al file. Por ejemplo, el file "Macintosh HD: Users: me: sample.txt", el file POSIX "/Users/me/sample.txt", o el resultado de elegir el file serían todos aceptables, pero la cadena "/ Users / me / sample.txt "no lo haría.

    &

    Nota: Como se menciona en la compatibilidad anterior, las aplicaciones de espacio aislado no podrán acceder a los files a los que se hace reference en los commands que utilizan una ruta de cadena. Cualquier parámetro o propiedad en su aplicación que haga reference a files debe declararse como file de tipo y no debe escribir text. Apple Event Manager agregará extensiones de sandbox a events que tengan parameters de tipo file, pero solo si el parámetro es de un tipo reconocido como file: escribaAlias, tipoFileURL, cFile, y así sucesivamente. Sin estas extensiones, no se podrá acceder al file desde la zona de testings de la aplicación de destino, y probablemente el command fallará.

    Parece que la 'solución' es usar un POSIX file para evitar el problema de la zona de testings

    Después de algunos golpes sobre cómo hacer que Applescript funcione con el POISIX file de una list, se me ocurrió esto …

    retocado

     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, ya que cada import es nueva, pero funciona.
    Ahora funciona en una import.

    También puede insert esta línea en cualquier lugar antes de la línea de export en su código:

     open for access file f 

    Esto pareció hacer el truco para mí.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).