在AppleScript中等待Photoshop文档关闭?

在AppleScript中等待Photoshop文档关闭?,applescript,photoshop,finder,Applescript,Photoshop,Finder,我做了一个脚本预览,它是完美的工作。它打开图像,然后等待预览中的文档关闭 在那之后,我用Photoshop尝试了同样的方法,但它在那里不起作用: tell application "Finder" try set appID to application file id "com.adobe.Photoshop" --set appID to application file id "com.apple.Preview" on error errM

我做了一个脚本预览,它是完美的工作。它打开图像,然后等待预览中的文档关闭

在那之后,我用Photoshop尝试了同样的方法,但它在那里不起作用:

tell application "Finder"
    try
        set appID to application file id "com.adobe.Photoshop"
        --set appID to application file id "com.apple.Preview"
    on error errMsg
        set appID to 0
    end try
end tell
tell application "Finder" to set appName to name of appID
tell application appName
    run
    activate
    set fileHandle to open POSIX file pngFile as alias
    repeat
        -- exit repeat
        try
            get name of fileHandle
        on error
            exit repeat
        end try
        delay 1 -- delay in seconds
    end repeat
end tell
display dialog "Document is closed now"

如果某个文件仍然打开,你知道哪里出了问题,或者更好的方法是如何在Photoshop中检查吗?

如果你想打开一个文件并延迟到该文件在Photoshop中实际打开,那么你的代码就出了一些问题。首先,如果你想按照你的想法行事,那么你的“退出重复”路线就错了。它不应该在try块的“出错”部分。重复循环和尝试块的目的是等待,直到您可以无错误地获得文件名。。。意味着文件已打开。。。然后退出,重复。所以你的重复循环应该是这样的

repeat
    try
        get name of fileHandle
        exit repeat
    end try
    delay 1 -- delay in seconds
end repeat
然而,您的代码中还有其他错误,因此即使进行了修复,它仍然无法工作。一个大错误是文件句柄。Photoshop的open命令不会返回对文件的引用,因此当您“获取fileHandle的名称”时,无论发生什么都会出错,因为没有fileHandle

下面是我将如何编写您的代码。你不需要任何查找工具,当然也不应该把Photoshop代码放在查找工具代码中。无论如何,试试这个。我希望有帮助

set filePath to (path to desktop as text) & "test.jpg"

set fileOpen to false
tell application id "com.adobe.Photoshop"
    activate
    open file filePath

    set inTime to current date
    repeat
        try
            set namesList to name of documents
            if "test.jpg" is in namesList then
                set fileOpen to true
                exit repeat
            end if
        end try
        if (current date) - inTime is greater than 10 then exit repeat
        delay 1
    end repeat
end tell
return fileOpen

请注意,编辑Darrick Herwehe添加了一个“end tell”Thx,复制粘贴错误,它应该是在第一次尝试块之后,现在修复(不再查找->Photoshop嵌套)嗨,我想上传编辑过的文件,所以我真的在等待文件关闭,而不是打开。有名称列表的部分看起来与我需要的相反,所以我明天第一件事就是尝试它,然后再报告。谢谢只需更改if语句。。。如果“test.jpg”不在名称列表中,那么。。。并将变量名从fileOpen更改为fileClosed。好的,它成功了,非常感谢!将立即接受,但您可能希望在开始时添加一个警告,即您的代码正在等待文件打开而不是关闭。您的问题的标题是“在Applescript中等待文档打开”,因此产生了误解。我将在开头添加一些文字,以确保每个人都意识到这就是我要写的内容。我很高兴这对你们有所帮助。标题改为匹配问题,对不起!