0

Can someone show me how to pass a variable into an Applescript using osascript in python? I've seen some documentation/samples on doing this but I'm not understanding it at all.

Here is my python code:

# I want to pass this value into my apple script below
myPythonVariable = 10
cmd = """
 osascript -e '
 tell application "System Events"
 set activeApp to name of first application process whose frontmost is true
 if "MyApp" is in activeApp then
 set stepCount to myPythonVariableIPassIn
 repeat with i from 1 to stepCount
 DoStuff...
 end repeat
 end if
 end tell
 '
 """
os.system(cmd)
asked Aug 27, 2016 at 19:52
2
  • Possible duplicate of: stackoverflow.com/questions/13502836/… Commented Aug 27, 2016 at 20:12
  • In the solution to that one he's passing in '/Setup.scpt'. I was hoping to inline the applescript code right in my python code rather than having a ton of separate .scpt files I have to manage. Commented Aug 27, 2016 at 20:29

1 Answer 1

2

String concatenation with the + operator

myPythonVariable = 10
cmd = """
 osascript -e '
 tell application "System Events"
 set activeApp to name of first application process whose frontmost is true
 if "MyApp" is in activeApp then
 set stepCount to """ + str(myPythonVariable) + """
 repeat with i from 1 to stepCount
 -- do something
 end repeat
 end if
 end tell
 '
 """

Or, string formatting with the {} :

myPythonVariable = 10
cmd = """
 osascript -e '
 tell application "System Events"
 set activeApp to name of first application process whose frontmost is true
 if "MyApp" is in activeApp then
 set stepCount to {0}
 repeat with i from 1 to stepCount
 -- do something
 end repeat
 end if
 end tell
 '
 """.format(myPythonVariable)

{0} is the place-holder for the first variable, {1} is the place-holder for the second variable, ....

For multiple variables:

.format(myPythonVariable, var2, var3)


Or, string formatting with the %s operator

myPythonVariable = 10
cmd = """
 osascript -e '
 tell application "System Events"
 set activeApp to name of first application process whose frontmost is true
 if "MyApp" is in activeApp then
 set stepCount to %s
 repeat with i from 1 to stepCount
 -- do something
 end repeat
 end if
 end tell
 '
 """ % myPythonVariable

For multiple variables:

% (myPythonVariable, var2, var3)

answered Aug 28, 2016 at 15:36
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.