2016-05-13 9 views
0

このAppleScriptを実行しようとすると問題が発生しました。 このapplescriptの目的は、ファイルをシングルクリックしてこのスクリプトを実行すると、自動的にこのファイルを "david"という名前のブルートゥース上のデバイスに転送することです。しかし、私は弱ったラインで問題に遭遇しました。結果は次のとおりです。ブルートゥースのAppleScript自動ファイル転送

"エラー"システムイベントにエラーが発生しました:プロセス\ "Bluetooth File Exchange \"のウィンドウ1のスクロール領域\ "Bluetooth Devices \"を取得できません。 "-1728スクロール領域" Bluetoothファイル交換 "のウィンドウ1の" Bluetoothデバイス ""

と私はなぜわかりません。私はまったく別の人が書いたスクリプトですが、ちょっと変えてちょっと追加しました。 誰も助けてもらえますか?コードのタイプミスを指摘

property device : "david" 
tell application "Finder" to set fileAlias to selection as alias 
set fileToSend to fileAlias 
tell application "Finder" to open fileToSend using application file id "com.apple.BluetoothFileExchange" 
activate application "Bluetooth File Exchange" 
tell application "System Events" 
    tell process "Bluetooth File Exchange" 
    repeat until exists window 1 
    end repeat 
    select (1st row of table of scroll area "Bluetooth Devices" of window 1 whose value of text field 1 is device) 
    click button "Send" of window 1 
    end tell 
end tell 

問題が解決されました、ありがとう「pbell」。

以下のコードは、それがあまりにも遅い実行している)。このコードの問題は
1あるブルートゥース4.4.4

property device : "vivo X5Pro D" 
tell application "Finder" to set fileAlias to selection as alias 
set fileToSend to fileAlias 
tell application "Finder" to open fileToSend using application file id "com.apple.BluetoothFileExchange" 
activate application "Bluetooth File Exchange" 
tell application "System Events" 
    tell process "Bluetooth File Exchange" 
     repeat until exists window 1 
     end repeat 
     select ((row 1 of table 1 of scroll area 1 of window 1) whose value of UI element 2 of UI element 1 is device) 
     click button "Send" of window 1 
    end tell 
end tell 

のために働く修正版です。
2)コードにはGUIが含まれているため、いくつかの領域の変更された位置でシステムを更新すると、このコードが駄目になります。 (ありがとうpbell)

GUIとコマンドを直接バイパスする方法はありますか?私はこれが実行時間を短縮すると思います。 :)あなたはおそらく、あなたの現在のスクリプトで2課題いる

+0

誰もが少しの時間を過ごすことができます私のスクリプトの表情に洞察力を共有するための –

答えて

0

1)値「1」は、あなたの行にありません....スクロール領域のテーブルの行「Bluetoothデバイス」...

誤って削除した可能性があります。 ....スクロールエリア "Bluetoothデバイス"のテーブル1の行....

2)このスクリプトはGUIスクリプトを使用しています。つまり、マウスでユーザーの行動をシミュレートします。これらのアクションは、実際には厳密にアプリケーションインターフェイス(ウィンドウのデザイン、ボタンなど)に依存しています。これらのアイテムはすべてUIエレメント(UI = User Interface)と呼ばれます。したがって、アプリケーションを更新するときに、新しいバージョンの表示が同じでない場合は、それ以上は動作しません。

BluetoothアプリケーションがOSアップデートで更新されます。あなたが持っているシステムバージョンはわかりませんが、El Capitainでは、Bluetooth交換で使用されるUI要素は、あなたのスクリプトで使われていない要素です。

たとえば、リスト内のデバイス名を知るには、その行のUI要素1の静的テキスト1があります。現在のスクリプトでは、行のテキストフィールド1を探しています。 デバイス名はもはや行のプロパティではないため(行のUI要素1のプロパティではありません)、構文はもう機能しません。

使用しているのBluetooth交換バージョン

は?(私は4.4.4です)

+0

感謝を取ります!確かに、あなたが言及した#2はシステムを更新するたびに多くのトラブルを引き起こします。とにかく、私はGUIの使用を避け、システムアップデートに関係なく目的を達成するために直接コマンドを使用することができますか?ところで、コードが修正され、Bluetooth交換で今すぐ使用できるようになりました。4.4.4 –

+0

コメントに投稿する方法がわからないので、元の質問に変更バージョンで投稿します:) –

+0

はいBluetoothのGUIスクリプティングを避ける方法がありますが、それをテストしたことはありません。ここでスクリプトの2行だけで提案されています:行1: "ファイルを選択するためにmyFileを設定"と2行目 "myFileのファイルPOSIXパスをデバイス" xxxxx "に文字列として送信するようにアプリケーション" Bluetooth File Exchange "に伝えます。あなたのデバイスのブルートゥースアドレスでなければなりません(Bluetooth環境設定パネルであなたのデバイスを右クリックして見ることができる6対の16進数のようなものです)。ファイルを受信できるBluetoothデバイスがないのでテストできません! – pbell

関連する問題