Applescript を含む小さな Automator スクリプトをコーディングしています。Applescript は、いくつかの画像を指定されたフォルダーにダウンロードするシェル スクリプトを実行します。Automator スクリプトの次のステップでは、これらの画像から PDF を作成します。小さな問題ですが、画像のダウンロードが完了する前にPDFの作成がすでに開始されているため、空のPDFファイルが取得されます。次のステップに進む前に、Applescript のダウンロードが完了するまで Automator を待機させるにはどうすればよいですか?
2 に答える
ダウンロードを行うためにどのシェルコマンドを使用していますか?カール?これを行う1つの方法は、ダウンロードのたびにシェルスクリプトに次のようなものを追加することです。
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
または、必要に応じて(または、コードがどのように見えるかに応じて、これがより理にかなっている場合:
すべてのファイルに対してシェルスクリプトを実行し、すべてのファイルが完了した後、より一般的なdeletemeファイルを作成してから、pdfを実行します。
Automatorは、スクリプトの実行アクションが完了するまで待機します。コードを見なくても推測できる問題は、AppleScript がある種の非同期ダウンロード メソッドを使用していることです。おそらく Safari に伝えていますか? -- そのため、ダウンロードが実際に完了する前にスクリプトが終了します。上記のcurl
(1)の提案のような同期メソッドを使用すると、問題が解決するはずです。
ところで、Run Script アクションを使用して呼び出すdo shell script
のは少しばかげています。代わりに Run Shell Script を使用できます。