【问题标题】:Only continue Automator script when Applescript is done仅在 Applescript 完成后继续 Automator 脚本
【发布时间】:2013-02-11 14:59:52
【问题描述】:

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

【问题讨论】:

  • 您可以发布您的 AppleScript 代码吗?没有它,很难猜测可能的解决方案。

标签: applescript automator


【解决方案1】:

您使用什么 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

或者,如果您愿意(或者这是否更有意义,具体取决于您的代码的外观:

all 文件执行 shell 脚本,all 完成后创建一个更通用的 deleteme 文件,然后 执行 pdf 文件。

【讨论】:

    【解决方案2】:

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

    顺便说一句,使用 Run Script 动作调用do shell script 有点傻;你可以改用 Run Shell Script。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-03
      • 2015-07-11
      • 1970-01-01
      • 2017-12-14
      • 2013-12-08
      • 1970-01-01
      相关资源
      最近更新 更多