You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过AppleScript或JXA删除Photos子文件夹?求解决方法

解决Photos脚本删除子文件夹的"对象未找到"问题

我之前也踩过这个坑!Photos的AppleScript/JXA接口在处理子文件夹时确实有个小陷阱——直接通过父文件夹的层级引用操作子文件夹,经常会触发"对象未找到"错误,核心原因是Photos的脚本模型对嵌套文件夹的直接识别支持不够稳定,通过文件夹ID来定位删除是最可靠的方案。

AppleScript 正确写法

先获取子文件夹的唯一ID,再通过ID执行删除操作,亲测有效:

tell application "Photos"
    -- 定位父文件夹和子文件夹
    set parentFolder to folder "a"
    set subFolder to folder "b" of parentFolder
    
    -- 获取子文件夹的唯一ID(关键步骤)
    set subFolderID to id of subFolder
    
    -- 通过ID删除子文件夹
    delete folder id subFolderID
end tell

为什么直接用delete subFolder不行?因为Photos的脚本引擎有时候无法正确解析嵌套层级的对象引用,而ID是每个文件夹的唯一标识,用ID定位不会出现识别偏差。

JXA 正确写法

同样的思路,先获取子文件夹ID,再通过顶层folders集合用ID定位后删除:

const Photos = Application("Photos");
Photos.includeStandardAdditions = true;

// 定位子文件夹
const parentFolder = Photos.folders.byName("a");
const subFolder = parentFolder.folders.byName("b");

// 获取ID并执行删除
const subFolderID = subFolder.id();
Photos.delete(Photos.folders.byId(subFolderID));

或者更简洁的单行写法:

const Photos = Application("Photos");
const subFolder = Photos.folders.byName("a").folders.byName("b");
Photos.delete(Photos.folders.byId(subFolder.id()));

额外注意事项

  • 确保你的脚本已经获得了系统权限:打开「系统设置」→「隐私与安全性」→「自动化」,允许对应的脚本编辑器(比如Script Editor)控制Photos。
  • 如果子文件夹中包含相册或照片,Photos会阻止删除,需要先清空子文件夹内容再操作。

内容的提问来源于stack exchange,提问作者the_last_voice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:10:27