AppleScript 保存预览文档

AppleScript to Save Preview Document

我正在使用第三方应用程序将图像复制到剪贴板。然后我想执行一个打开预览的 AppleScript,创建一个新文档,然后使用剪贴板作为内容,然后将其保存到指定位置。

我已经完成了 99% - 只是无法保存文档。我在 OS X 10.9.5。

到目前为止,这是我的脚本:

set the save_location to the quoted form of "/Users/freddy/Documents/test.png"

 tell application "Preview"
    activate
 end tell

 tell application "System Events"
    tell process "Preview"
        keystroke "n" using {command down}
    end tell
 end tell

 tell application "Preview"
    activate
    save front document as "PNG" in POSIX file save_location
 end tell

我找不到保存预览文档的正确语法。这将是当时唯一打开的文档。

尝试以下操作 - 注意评论:

# Do not use `quoted form of` - only needed and useful with `do shell script`
set the save_location to "/Users/jdoe/Documents/test.png"

tell application "Preview"
    activate
end tell

tell application "System Events"
    tell process "Preview"
        keystroke "n" using {command down}
    end tell
end tell

tell application "Preview"
    # Wait until the new window appears.
    # Trying to save before the window has appeared will fail.
    # Note: - This assumes that NO window was initially open.
    #       - The code should be made more robust to eventually time out.
    repeat until (count of windows) > 0
        delay 0.3
    end repeat
    activate
    # Save the document; `as "<format>"` doesn't seem to work, but the 
    # format is *implied* by the filename suffix (extension).
    save front document in POSIX file save_location
end tell

此脚本用于将剪贴板中的图像保存到磁盘,在 2010 Mac Mini 上使用 OS 10.11.6 中的预览:

--CONDITIONS: Finder's clipboard has an image in it
tell application "Preview"
    launch
    activate
end tell
delay 2 --tweak the delays to what works
tell application "System Events" --not as elegant as "tell application...to tell process", but clearer, chronologically
    keystroke "n" using command down --Preview creates a new window.
    delay 1
    keystroke "v" using command down --Finder's clipboard image is pasted into Preview window.
end tell
delay 1
tell application "System Events"
    set the clipboard to "Joe Blow" --for name of forthcoming Preview file
    delay 1
    keystroke "w" using command down --Forces prompt of Preview to save image.
    delay 1
    keystroke "v" using command down --Pastes new filename into Preview's save window.
    delay 1
    key code 36 --"Return" key saves the new file.
end tell
--RESULT: A new image exists in your default folder, named "Joe Blow.png" (or whatever extension)