只有在Applescript完成后才能继续使用Automator脚本

时间:2013-02-26 08:19:56

标签: applescript automator

我正在编写一个带有Applescript的小型Automator脚本。 Applescript运行一个shell脚本,将一些图像下载到指定的文件夹。 Automator脚本的下一步是从这些图像中生成PDF。 小问题,在完成图像下载之前已经开始创建PDF,所以我得到一个空的PDF文件。 我怎么能让Automator等到Applescript下载完成后再进入下一步呢?

2 个答案:

答案 0 :(得分:0)

您使用哪些shell命令进行下载?卷曲?一种方法是在每次下载后向shell脚本添加一些内容,例如:

curl http://whatever/Your/Url/is/file1.xxx;echo ''>file1.deleteme

然后确保你的applescript只在找到file1.deleteme文件后删除它才启动pdf部分。当我使用curl执行此操作时,在完成下载之前,它不会生成该空文件。

AS部分可以从(危险,未经测试)之类的东西开始:

--within outer loop for each file...
tell application "Finder"
 repeat until exists (pathToDeleteMeFile)--this is built using basename + "deleteme"
  delay 1--one second delay
 end repeat
end tell
--do pdf stuff here for that (each) file

或者,如果您愿意(或者根据代码的含义,这更有意义:

所有文件执行shell脚本,在所有完成后创建一个更通用的deleteme文件,然后执行pdf内容。

答案 1 :(得分:0)

Automator 等待运行脚本操作完成。在没有看到你的代码的情况下猜测的问题是你的AppleScript正在使用某种异步下载方法 - 或许可以告诉Safari? - 所以脚本在下载实际完成之前完成。使用同步方法,例如curl(1)的上述建议,应该解决问题。

顺便说一句,使用“运行脚本”操作来调用do shell script有点傻;你可以改用Run Shell Script。