OK, I got it solved.
The FSM containing the Set String Value which set the global variable 'animation_name' was on an empty game object nested down in a canvas object where all the buttons live (since I want to be able to hide the canvas and thus, hide the buttons on the canvas).
But it seems having this FSM down there made certain FSMs get the global variable before that FSM had been run, so they got the original value of the global variable 'no name'.
When I moved the empty game object, which contains the global variable setting FSM, to the root level of the hierarchy... this FSM was run first and then the 3 other actions correctly get the desired global variable value.
Thanks again!