Applescript 光圈导出导入脚本

Applescript 光圈导出导入脚本,applescript,dam,Applescript,Dam,随着macOS Catalina放弃对Aperture的支持,我需要将我的库移动到另一个应用程序。Mylio有一个很好的导入工具,它可以承载几乎所有的库结构和元数据,但会丢失一些调整。为了保留这些,我尝试编写一个Apple脚本,导出库中的所有图像(应用了调整),并在删除原始图像之前将它们重新导入到同一个项目中 我想我几乎有了第一部分,导出所有图像 tell application "Aperture" tell library 1 set projects to (get e

随着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)
我想问题在于
将项目设置为(获取每个项目)
,但我在网上找不到任何示例,从中可以看出这里还可以写些什么。

我没有使用
光圈,因此我只能进行有根据的猜测:

从错误消息中,我可以合理地确定
project
是一个AppleScript对象,特别是一个元素,从脚本中,我假设它属于
对象。在这种情况下,几乎可以肯定的是,已经定义了一个名为
“projects”
的复数形式,它将引用所有类型均为
project
的(即多个)元素的集合

因此,以下行:

set projects to (get every project)
是有问题的,因为您正在尝试重新定义属于AppleScript的类对象。事实上,
项目
将是每个项目
的简写,因此这应该已经按照您想要的方式定义,只需完全删除这一行就足够了

另一方面,(从您的脚本来看,
导出
命令可以传递一组对象作为其直接参数,您正在使用
导出其每个图像…
。假设这是有效的,那么它可能能够一次导出所有项目中的所有图像:

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")
我不使用
光圈
,因此我只能根据实际情况进行猜测:

从错误消息中,我可以合理地确定
project
是一个AppleScript对象,特别是一个元素,从脚本中,我假设它属于
对象。在这种情况下,几乎可以肯定的是,已经定义了一个名为
“projects”
的复数形式,它将引用所有类型均为
project
的(即多个)元素的集合

因此,以下行:

set projects to (get every project)
是有问题的,因为您正在尝试重新定义属于AppleScript的类对象。事实上,
项目
将是每个项目的简写,因此这应该已经按照您想要的方式定义,只需完全删除这一行就足够了

另一方面,(从您的脚本来看,
导出
命令可以传递一组对象作为其直接参数,您正在使用
导出其每个图像…
。假设这是有效的,那么它可能能够一次导出所有项目中的所有图像:

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")

我最终成功了(除了在导出和重新导入后删除原始图像,但我可以通过标记或对脚本将处理的所有图像进行颜色编码来手动完成)


我最终成功了(除了在导出和重新导入后删除原始图像,但我可以通过标记或对脚本将处理的所有图像进行颜色编码来手动完成)


谢谢你的帮助。我尝试运行您的脚本,并在最后一个小时内尝试修复它给我带来的错误:
执行错误:Aperture出现错误:无法获取文件夹命名策略“Project Name”。(-1728)
和类似的
执行错误:光圈出现错误:无法获取导出设置“JPEG-原始大小”。(-1728)
。考虑到我肯定有一个导出设置和一个文件夹策略以及这些确切的名称,这很奇怪。如果我运行
告诉应用程序“Aperture”激活将FolderPolicys设置为文件夹命名策略的名称,从列表FolderPolicys中选择,并提示“选择文件夹命名策略”将folderPolicy设置为(结果的第1项)end tell
它甚至向我展示了我所期待的。正如你所说,这些不是我的脚本的问题。它们是你的问题,因为我的脚本是你的副本,除了我注意解决如何引用
图片的问题之外。看起来我的脚本解决了您的脚本的初始问题,但事实证明您的脚本遇到了您现在面临的后续问题。由于我不使用Aperture,因此我无法就如何实现特定于Aperture的术语/语法提供建议。如果您将Aperture的脚本定义文件上载到提供下载链接的文件共享站点,或者将其内容复制到在线粘贴箱(如)中,我可能能够提供一些见解。通常,它是以应用程序命名的,在这种情况下,您可以运行这行AppleScript将其内容复制到剪贴板以粘贴到粘贴箱:
将剪贴板设置为(读取捆绑应用程序“Aperture”中的资源“Aperture.sdef”的路径为“utf8”)
这样我就可以理解Aperture AppleScripts的工作原理,并为您提供建议。这是。谢谢您的帮助。我尝试运行您的脚本,并在最后一个小时内尝试修复它给我带来的错误:
执行错误:Aperture出现错误:无法获取文件夹命名策略“Project Name”。(-1728)
和类似的
执行错误:光圈出现错误:无法获取导出设置“JPEG-原始大小”。(-1728)
。考虑到我肯定有一个导出设置和一个文件夹策略以及这些确切的名称,这是非常奇怪的。如果我运行
告诉应用程序“Aperture”激活将folderpolics设置为文件夹命名策略的名称,请从列表folderPolic中选择