Reputation: 1
I encountered a problem when I trying to run this applescript. The purpose of this applescript is when you single click on any file, and run this script, it will automatically transfer this file to a device on the bluetooth named "david". But I encountered a problem in the line of underdashed. The result shows:
"error "System Events got an error: Can’t get scroll area \"Bluetooth Devices\" of window 1 of process \"Bluetooth File Exchange\"." number -1728 from scroll area "Bluetooth Devices" of window 1 of process "Bluetooth File Exchange""
and I don't know why. I am completely a noob to applescript, this is some script wrote by someone else, and I just changed and add a little bit to it. Can anyone help please?
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
The problem is now solved, thanks "pbell" pointing out the typo in the code.
The code below is a modified version that works for Bluetooth 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
The problems of this code are
1) it's running too slow.
2) The code involves with GUI so an system update with modified position of several areas will turn this code into crap. (Thanks to pbell)
so is there any alternative way to bypass the GUI and command directly? I guess this will decrease the running time. :)
Upvotes: 0
Views: 380
Reputation: 3105
You have probably 2 issues in your current script :
1) a value "1" is missing in your line ....row of table of scroll area "Bluetooth Devices"...
You probably deleted it by mistake. it should be : ....row of table 1 of scroll area "Bluetooth Devices"....
2) this script uses GUI scripting. It means it simulate the user actions with mouse. these actions are indeed strictly dependent of the application interface (the design of the window, the buttons, ....). all these items are called UI elements (UI=User Interface). So when you are updating your application, if new version displays are not same, it does not work any more.
Bluetooth application is updated with OS updates. I don't know which system version you have, but on El Capitain, the UI elements used in Bluetooth exchange are not the one used in your script.
For instance, to know the device name in the list, it is the static text 1 of UI element 1 of the row. In your current script, you are looking for text field 1 of the row. Because device name is no longer a property of the row (it is not a property of the UI element 1 of the row), your syntaxe don't work any more.
Which Bluetooth exchange version are you using ?(mine is 4.4.4)
Upvotes: 0