AppleScript写入Dropbox目录时报-10000权限错误问题求助
AppleScript保存Mail附件到Dropbox目录报-10000权限错误解决方案
问题根因
该错误和传统Unix文件权限无关,之前修改chmod权限、调整Finder共享权限不生效是因为没命中核心原因:
- macOS Catalina及以上版本的TCC沙盒权限机制默认拦截App对受保护目录(包括Dropbox同步目录)的写入操作,Mail.app默认没有Dropbox目录的写入授权
- 脚本直接拼接POSIX格式的字符串路径传给
save命令,遇到Dropbox (Company)这类带空格、括号的特殊路径时会出现解析错误,非受保护目录容错性高不会触发问题,Dropbox目录的权限校验更严格就会抛出-10000错误 - Dropbox客户端会自动重置同步目录的权限配置,手动执行chmod修改的权限会被自动覆盖,无法生效
操作步骤
- 配置系统权限
打开「系统设置」→「隐私与安全性」,做两个配置:- 进入「文件和文件夹」分类,找到Mail应用,展开后开启Dropbox目录的访问权限
- 如果上述条目不存在,直接进入「完全磁盘访问权限」分类,点击+号添加Mail.app并开启对应开关,配置完成后重启Mail.app
- 修正脚本路径逻辑
不要直接传拼接的字符串路径,先将POSIX路径转为AppleScript可识别的文件引用类型,避免特殊字符解析失败,修正后的脚本如下:
tell application "Mail" set theMessages to messages of mailbox "Inbox" of account "xxx@yyy.zzz" -- 替换成你自己的Dropbox目录完整POSIX路径 set theOutputFolder to POSIX file "/Users/你的系统用户名/Dropbox (Company)/" as alias repeat with theMessage in theMessages repeat with anAttachment in (get mail attachments in theMessage) set theAttachmentName to name of anAttachment set theSavePath to ((theOutputFolder as text) & theAttachmentName) as POSIX file save anAttachment in theSavePath end repeat end repeat end tell
- Dropbox端校验(前两步无效时操作)
打开Dropbox客户端设置→偏好设置→同步页,检查是否开启了目录访问保护类功能,如果开启就将Mail.app加入允许访问列表,或者临时关闭功能测试脚本是否正常运行。
提示:不要尝试手动修改Dropbox同步目录的Unix权限,Dropbox客户端会在同步时自动把权限重置为默认值,这类操作没有实际效果。
内容的提问来源于stack exchange,提问作者divingTobi
相关产品推荐
相关产品推荐

