0

Apple の autoingestion.class を介してダウンロード レポートをダウンロードするための最初のスクリプトを作成しました。ほとんどの場合、OSX 10.7.5 では正常に動作しますが、OSX 10.8 では、ファイルの名前を変更したり、端末のテキストを AppleScript エディター自体に挿入したりすることがあります。

これを解決/改善する方法を知っている人はいますか?

tell application "Terminal"
activate
delay 1 #give time to activate Terminal

tell application "System Events"
    keystroke "cd " & ingestPath #path to autoingestion.class
    keystroke return
    keystroke "java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate
    keystroke return
end tell

delay 0.1
set frontWindow to window 1
repeat until busy of frontWindow is false
    delay 1
end repeat
#display dialog "finished"
#quit end tell

お時間いただきありがとうございます

Edit1: 素早い回答ありがとうございます!! 2番目の部分を試してみましたが、Javaエラーが発生しました。何かアイデアはありますか? 他のMacBookを入手したらすぐに遅延を試してみます。

MacBook-Pro:~ USER$ java '/Volumes/STICK/Projekte/App_Statstiken/Apple/sales/Autoingestion' USERNAME PW VENDORID S D S 20130718
Exception in thread "main" java.lang.NoClassDefFoundError: /Volumes/STICK/Projekte/App_Statstiken/Apple/sales/Autoingestion
Caused by: java.lang.ClassNotFoundException: .Volumes.STICK.Projekte.App_Statstiken.Apple.sales.Autoingestion
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Edit2: FYI: プロパティを使用して userName と userPW を保存する新しい autoingestion.class に更新されました。

set exePath to ingestPath 
do script "java -cp " & (exePath & space & "Autoingestion autoingestion.properties" & space & vendorID & " S D S " & reportDate)

autoingestion.propertiesが見つからないというエラーが発生しますが、

keystroke "java Autoingestion " & "autoingestion.properties" & " " & vendorID & " S D S " & reportDate 

は働いている。プロパティ ファイルの前にパスを配置しようとしましたが、役に立ちませんでした。何か案は?

働く:

do script "cd " & ingestPath & ";java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate
4

1 に答える 1

0

多くの場合、キーストロークでは、applescript コードはコンピュータ インターフェイスが入力を実行できる速度よりも速く実行されます...そのため、問題が発生します。解決策は、入力コマンドの間に短い遅延を入れて、コンピュータ インターフェイスに入力を実行する時間を与えることです。また、システム イベント コードは、コードの "tell application Terminal" ブロック内に配置しないでください。

これを試して。必要に応じて、normalDelay と shortDelay の時間を調整して、長くしたり短くしたりできます。

set normalDelay to 1
set shortDelay to 0.2

tell application "Terminal" to activate
delay normalDelay --give time to activate Terminal

tell application "System Events"
    keystroke "cd " & ingestPath --path to autoingestion.class
    delay shortDelay
    keystroke return
    delay shortDelay
    keystroke "java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate
    delay shortDelay
    keystroke return
    delay shortDelay
end tell

tell application "Terminal"
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay normalDelay
    end repeat
end tell

display dialog "finished"

:私はこれを試していませんが、次のようにコードを簡素化できる場合があります...

set exePath to ingestPath & "Autoingestion"

tell application "Terminal"
    activate
    do script "java " & quoted form of exePath & space & userName & space & userPW & space & vendorID & " S D S " & reportDate

    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat
end tell

display dialog "finished"

EDIT :パスやその他のエラーに問題がある場合(コメントに示されているように)、このアプローチが機能する可能性があります。これを do script コマンドとして試してください。キーストローク方式が機能する場合、これはそのように動作します。

do script "cd " & ingestPath & ";java Autoingestion " & userName & " " & userPW & " " & vendorID & " S D S " & reportDate
于 2013-07-29T07:35:23.830 に答える