Updated/Better Answer:
1) This new script doesn't flash.
2) For reasons unbeknownst to man and logic (or just me), applescript sometimes/almost-always fails to Turn Bluetooth Off, if the System Preference window is in the background. Instead of turning off, what actually occurs is that Bluetooth immediately re-enable itself, so the pane is in a fresh state: it's ON, but no connections.
To overcome that, one way to to bring SysPref to the front, as in the original answer. Or, run a loop that click the button again (or for a 3rd time) until Bluetooth is really off. That's why there are two variables and a loop in the script. This should make the script more reliable. statName
variable records the original status. Loop
will continue clicking the button until status has changes. failSafe
makes sure the script will not run forever in case of error. All at the cost of aesthetics of the code.
tell application "System Events"
tell process "System Preferences"
activate
end tell
tell application "System Preferences"
set current pane to pane "com.apple.preferences.Bluetooth"
end tell
tell process "System Preferences"
set statName to name of button 3 of window 1 as string
set failSafe to 0
repeat until statName is not name of button 3 of window 1 as string ¬
or failSafe is 10
click button 3 of window 1
set failSafe to failSafe + 1
delay 0.1
end repeat
end tell
tell application "System Preferences"
quit
end tell
end tell
Original Answer:
tell application "System Preferences"
activate --Change 1/2
reveal pane "com.apple.preferences.Bluetooth"
end tell
tell application "System Events" to tell process "System Preferences"
click button 3 of window 1 --Change 2/2
end tell
quit application "System Preferences"
From Accessibility Inspector:
button 3
in the the no.6 item on the list. The 6th button is no.11 in the list. When you call button 6
Preference Window goes Genie. I guess Mavericks had all the buttons bunched up at the front.
Best Answer
The following example AppleScript code will toggle the state of the "Use grayscale" checkbox in Accessibility under System Preferences in OS X Yosemite (tested under 10.10.4) regardless of what was last selected under Accessibility as it tells System Preferences to open directly to the location of the "Use grayscale" checkbox and toggle its state.
The next issue is how you want to execute it. The problem surrounding setting it as a Service through Automator to use a Keyboard shortcut without the use of a third party utility is every application that receives the shortcut key combo will need to have permission to do so and that becomes a pain unless you only choose e.g. Finder instead of all applications. So without a third party utility I'd either save it as a script in the Users Script folder and then access it from the Script menu in the Apple menu bar or as an application.
The settings for the Script menu in the Apple menu bar are in the Script Editors Preferences. Then it's just two mouse clicks anytime you want to toggle the state of the "Use grayscale" checkbox. One to click the Scripts menu and another to click the script name.
As an application it can be placed in the Dock and then it's a single mouse click anytime you want to toggle the state of the "Use grayscale" checkbox.
In either of these two cases you'll have to give permission under Accessibility on the Privacy tab of Security & Privacy in System Preferences in order to run it successfully.
As a side note, if you use a program like FastScripts, you only need to use the example AppleScript code as a .scpt saved in Script Editor, not create an Automator service using the mentioned workaround in the comment and can assigned the keyboard shortcut in the Preferences for FastScripts.
Note that I am not affiliated with the developer of FastScripts, just a satisfied user.