Hi,
I was wondering if anyone knows how to set a workflow constant using the python sdk?
I can read the constant with something like this:
if self.alteryx_engine.get_constant(0, 7)[0] == 'User.Test':
return self.alteryx_engine.get_constant(0, 7)[2]
but if I want to update the value, what command would i use? I tried:
self.alteryx_engine.get_constant(0, i)[2] == 'foo'
self.alteryx_engine.set_constant(0, i)[2] == 'foo'
but these where guesses and not very good ones.
Thanks
Solved! Go to Solution.
I have not tried updating workflow constants, and am not sure if it is possible. But at first glance, I see 1 possible issue with your code. '==' checks for equality; it does not assign a value. Try using a single equals sign:
self.alteryx_engine.get_constant(0, i)[2] = 'foo'
Typo! thanks.
unfortunately still doesn't work. because you can't assign a value to a function, obviously.
think you might be right in think it might not be possible.
So after a bit of messing, I came up with this solution, not perfect as it only updates the file if closed or once it has been reopened, but it will work for my needs.
I thought I would post in case anyone else had a similar issue.
import xml.etree.ElementTree as ET
filename = 'c:\\myfilepath\\myworkflow.yxmc'
tree = ET.parse(filename)
root = tree.getroot()
def UpdateConstant(elementName, replaceWith):
replaced = False
for constant in root.find(".//Constants"):
if constant.find("./Name").text == elementName:
constant.find("./Value").text = replaceWith
replaced = True
tree.write(filename)
else:
pass
return replaced
print(UpdateConstant('Foo_Name', 'Foo_Value'))
Thanks