Skip to main content
1 of 3
Lri
  • 106.4k
  • 19
  • 230
  • 283

The script posted by Ewwis was mentioned at Mac OS X Hints. I'm copying my comment from there just to point out that no-one should ever use UI scripting for this.

  • There's no way to close the dialog at the start or cancel sending a tweet.
  • The second click action didn't work after logging out and back in if Notification Center hadn't been shown before.
  • The script didn't sometimes work when there was a delay before the text view for composing a tweet was shown.
  • The text view for composing a tweet can contain the previous text if Notification Center was hidden before a tweet was sent or if there was an error in sending a tweet.
  • keystroke cannot be used to insert some characters that aren't found on the current keyboard layout. You should use the clipboard instead.
  • I don't know what the keystroke space at the end is supposed to do, but the script didn't close the Notification Center sidebar when I tested it.

This script fixes some of those issues, but doesn't work if Notification Center is already shown.

set answer to text returned of (display dialog "" default answer "")
try
    set old to the clipboard
end try
try
    set text item delimiters to linefeed
    set the clipboard to paragraphs of answer as text
    tell application "System Events"
        tell process "Notification Center"
            click menu bar item 1 of menu bar 1
            try
                windows
            on error
                click menu bar item 1 of menu bar 1
                click menu bar item 1 of menu bar 1
            end try
            click button 1 of UI element 1 of row 2 of table 1 of scroll area 1 of window 1
            delay 0.1
            keystroke "av" using command down
            keystroke "d" using {shift down, command down}
            repeat 100 times
                try
                    delay 0.1
                    click menu bar item 1 of menu bar 1
                    exit repeat
                end try
            end repeat
        end tell
    end tell
end try
try
    set the clipboard to old
end try

It would be easier to just use the API.

Lri
  • 106.4k
  • 19
  • 230
  • 283