使用 AppleScript 通过 Safari 下载文件

Dav*_*vid 5 safari applescript download

由于我不会真正讨论的原因,我需要在 AppleScript 中编写一些内容,专门通过 Safari 下载一些文件。(只是某人双击运行的东西,它将打开 Safari 并在启动一些下载时向他们显示一个网页。)我可以使用 AppleScript 设置文档的 URL,但这不会下载文件。这是 Safari 认为它可以理解的文件,因此它只是尝试直接打开它。我需要将文件下载到文件系统。

我在 Google 上找到的所有内容都提到了“URL 访问脚本”,但是当我使用它时,AppleScript 编辑器要求我选择它是什么应用程序,而我似乎没有(或者不知道它在哪里)。其他建议是调用命令行工具来下载文件,但这里的问题显然是用户在 Safari 中有一些 cookie 授权他们访问服务器资源,因此命令行工具只会收到错误。

所以我想这个问题可以分解为:

  1. 如何tell application "Safari"下载文件?
  2. 我可以指定文件的保存位置吗?还是只能进入Downloads文件夹?
  3. 或者,我是否可以将 Safari 配置为不尝试打开某些文件类型,以便我可以在显示页面之前循环浏览文档中的文件 URL?

Ann*_*nne 5

AppleScript 本身无法强制 Safari 下载文件。
目前我可以想象两种“hacky”替代方案:

1.使用 JavaScript 启动下载。(谷歌搜索实际脚本。)

tell application "Safari"
    do JavaScript " alert('AppleScript successfully executed.');" in document 1
end tell
Run Code Online (Sandbox Code Playgroud)

2.通过 GUI 脚本打开 Safari 下载管理器并粘贴 URL。
(确保启用辅助设备。)

tell application "Finder" to set the clipboard to "http://www.google.nl/favicon.ico"
tell application "System Events"
    tell application "Safari" to activate
    keystroke "l" using {command down, option down}
    keystroke "v" using command down
end tell
Run Code Online (Sandbox Code Playgroud)

AppleScript 无法指定下载特定文件的位置,
但它可以更改默认下载位置:(
确保路径存在并重新启动 Safari。)

do shell script "defaults write com.apple.safari DownloadsPath -string \"/Users/Anne/Desktop\""
Run Code Online (Sandbox Code Playgroud)

AppleScript 确实可以禁用“下载后打开安全文件”功能:(
确保重新启动 Safari。)

do shell script "defaults write com.apple.Safari AutoOpenSafeDownloads -boolean NO"
Run Code Online (Sandbox Code Playgroud)

Safari 现在可以自动下载 PDF 文件。
不幸的是图像仍在显示。

结论

AppleScript 本身根本无法实现您的目标。