AppleScript调用Preview导出PDF报错:无法获取keystroke" "
解决Preview AppleScript报错:Can’t get keystroke " "
嘿,我帮你找到了问题的根源——你遇到的Preview got an error: Can’t get keystroke " "报错,是因为keystroke这个命令根本不属于Preview应用,它是System Events的专属命令,你把它直接放在了Preview的tell块里,系统自然识别不了啦!
另外原代码还有几个可以优化的小细节,比如只筛选PDF文件、增加合理延迟确保界面加载、导出后关闭文件避免窗口堆积,我给你调整了完整的修复版脚本:
tell application "Finder" -- 定位目标PDF文件夹 set targetFolder to POSIX file "/Users/documents/PDFs" as alias -- 只筛选文件夹里的PDF文件,避免处理其他格式 set pdfFiles to files of targetFolder whose name extension is "pdf" as alias list end tell -- 遍历每个PDF文件 repeat with currentFile in pdfFiles tell application "Preview" open currentFile -- 等待文件加载完成,大文件可以适当延长延迟 delay 0.5 end tell -- 所有界面控制命令都放在System Events的tell块里 tell application "System Events" tell process "Preview" -- 点击File菜单下的Export as PDF…选项 click menu item "Export as PDF…" of menu 1 of menu bar item "File" of menu bar 1 -- 等待导出窗口弹出 delay 0.3 -- 按下回车键确认导出(前提是你已经预设好导出目标文件夹) keystroke return -- 等待导出完成 delay 0.2 -- 关闭当前文件,避免Preview窗口越开越多 click menu item "Close" of menu 1 of menu bar item "File" of menu bar 1 end tell end tell end repeat
还有几个关键注意事项要提醒你:
- 必须先在系统偏好设置→安全性与隐私→隐私→辅助功能里,给Script Editor(或者你用来运行脚本的工具)和Preview授予权限,否则System Events没法控制界面操作
- 如果你的导出目标文件夹不是默认的下载文件夹,还可以加一段脚本调出路径输入框,比如在点击Export菜单后加:
keystroke "g" using command down,然后输入目标路径再按回车 - 延迟时间可以根据你的电脑性能微调,如果还是出现操作失败,就把延迟数值调大一点
内容的提问来源于stack exchange,提问作者user2012677
相关产品推荐
相关产品推荐

