Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"No user interaction allowed" When running AppleScript in python

I have the applescript which will displays menu list and allow user to select menu items etc. It runs fine by itself. And now I try to run it in python. I get the No user interaction allowed. (-1713) error.

I looked online. I tried the following:

  1. add on run function in the same applescript, so what i did is just add the main into the run

    on run tell application “AppleScript Runner” main() end tell end run

  2. i tried to run the above in python import os def main(): os.system ('osascript -e "tell application "ApplesScript Runner" do script /Users/eee/applescript/iTune.scpt end tell"')

    if name == 'main': main() Neither way works. Can anyone tell me how to do this correctly?

like image 666
Fish OnTray Avatar asked Nov 21 '12 00:11

Fish OnTray


1 Answers

That's a common mistake. When you run a script using OSAScript from a shell, as you are doing, then you must tell an application to show any "display dialogs" or "choose list dialogs" or anything that requires user interaction. OSAScript can't show them so tell an app like the Finder to show them. Use code like this...

tell application "Finder"
    activate
    display dialog "Now it works!"
end tell

Or from the command line notice this won't work...

osascript -e 'display dialog "Now it will not work."'

But this will work since we tell the Finder to do it...

osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "Now it works!"' -e 'end tell'

So bottom line is that somewhere in your iTune.scpt you are displaying a dialog. In that script just tell iTunes or the Finder to display them.

like image 74
regulus6633 Avatar answered Nov 20 '22 07:11

regulus6633