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)
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)

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

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.