Edge Loop Straighten with Constraints works like this:
Selected one or more partial loop(s) of edges, run the script, and it will straighten all the verts between the end verts of the loop(s). What makes this script different from others of its kind is that it fully supports all three geometry constraint modes; edge, face, and normal constraints.