Search code examples
pythonzapier

Return multiple values using Python code in Zapier


I am building a Zapier Zap using Custom Code - Python as one of the steps. I need this code to return 2 values for use in down stream tasks.

I can return 1 value easily - visits_startdatetime. I added vists_name to the loop and return at the end but I only get one value returned.

    # 1. Convert the input data from a string to a array. 
visits_signedin = input['visits_signedin']
visits_signedin = list(visits_signedin.split(","))
visits_startdatetime = input_data['visits_startdatetime']
visits_startdatetime = list(visits_startdatetime.split(","))
visits_name = input['visits_name']
visits_name = list(visits_name.split(","))

#2. Loop through the array to find the first true value and return the startdatetime. If none is found, return nothing
for i in range(0, len(visits_signedin)):
    if visits_signedin[i] == "True":
        return {"visits_startdatetime": visits_startdatetime[i]} 
        return {visits_name": visits_name[i]}

return {"visits_startdatetime", "visits_name"}

I expect the output to be "12-1-2019" and "Yoga Class". The actual output is "12-1-2019"


Solution

  • Like in every other programming language, return terminates the function execution and provides the return value to its caller.

    Any code after the return statement will not run.

    If you need to return multiple values, you can return a dictionary with two entries:

    return {
        "visits_startdatetime": visits_startdatetime[i],
        "visits_name": visits_name[i]
    }
    
    # if no result
    return {
        "visits_startdatetime": None,
        "visits_name": None
    }
    

    or in your case, a cleaner way to do it would be:

    visits_startdatetime = None
    visits_name = None
    for i in range(0, len(visits_signedin)):
        if visits_signedin[i] == "True":
            visits_startdatetime = visits_startdatetime[i]
            visits_name = visits_name[i]
    
    return {"visits_startdatetime": visits_startdatetime, "visits_name": visits_name}