1

随着 macOS Catalina 放弃对 Aperture 的支持,我需要将我的资料库移动到不同的应用程序。Mylio 有一个很棒的导入工具,它可以继承几乎所有的库结构和元数据,但会丢失一些调整。为了保留这些,我正在尝试编写一个 Apple 脚本来导出我的库中的所有图像(应用了调整),并在删除原始图像之前将它们重新导入到同一个项目中。

我想我几乎有了第一部分,导出所有图像。

tell application "Aperture"
  tell library 1
        set projects to (get every project)
        repeat with i from 1 to count of projects
            tell (item i of projects)
                export its every image version naming folders with folder naming policy ¬
                    "Project Name" using export setting ¬
                    "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
            end tell
        end repeat
  end tell
end tell

但是,当我尝试运行此脚本时,我不断收到错误消息

apertureExportImport.applescript:704:712:
execution error: Aperture got an error: Can’t make {project id "1ixjjya6T+Sb3pFmhRK8Fg"} into type project. (-1700)

我想问题出在网上,set projects to (get every project)但我在网上找不到任何例子来弄清楚这里还有什么要写的。

4

2 回答 2

2

我不使用Aperture,所以我只能进行有根据的猜测:

从错误消息中,我可以合理地确定这project是一个 AppleScript 对象,特别是一个元素,从你的脚本中,我会假设它属于一个library对象。在这种情况下,几乎可以肯定会有一个名为"projects"already defined 的复数元素形式,它指的是所有类型为的(即多个)元素的集合project

因此,以下行:

set projects to (get every project)

是有问题的,因为您正在尝试重新定义属于 AppleScript 的类对象。实际上,projects将是 的简写every project,所以这应该已经以您想要的方式定义,并且完全删除该行就足够了。

在单独的说明中,看起来(从您的脚本)该export命令可以传递一组对象作为其直接参数,您正在使用export its every image.... 假设这是有效的,那么它可能能够一次导出所有项目中的所有图像:

tell application "Aperture" to export every image version in every project of library 1 ¬
    naming folders with folder naming policy "Project Name" using export setting ¬
    "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
于 2019-11-01T01:14:58.897 回答
2

我最终让它工作了(除了在导出和重新导入后删除原始图像之外的一切,但我可​​以简单地通过标记或对脚本将处理的所有图像进行颜色编码来手动完成)。

tell application "Aperture"
  with timeout of 86400 seconds
    activate
    set exportSetting to export setting "JPEG - Original Size"
    set folderPolicy to folder naming policy "Project Name"
    set exportFolder to "/Users/<user>/Desktop"
    -- Alternatively, use
    -- set exportFolder to (choose folder with prompt "Choose an export folder")

    tell library 1
    repeat with proj in projects
      set imageSel to every image version in proj where flagged is true
      export imageSel naming folders with folderPolicy using exportSetting to exportFolder
        set importFolder to exportFolder & "/" & name of proj
        import importFolder by referencing into proj
    end repeat
    end tell
  end timeout
end tell

一个很难学习的重要教训是,exportSetting需要folderPolicy在整个库的上下文中设置(即在脚本的最开始时)而不是在每个项目级别上,以避免错误

execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728)
于 2019-11-08T08:48:01.427 回答