I ran your script and it works well
The main problem right now is that using the face-to-edge-to-face method really only works easily when the original face selection consists of only 1 face (so that after clicking "Loop" it gives you a nice little cross). The trickier part is if you click the loop button multiple times....it still sort of "grows" the selection instead of creating a ring of faces.
My guess for a solution is that in order to create a row/column of faces, you'll simply have to successively find parallel
edges to the original 4 in your selection, and deselect the rest of them before each "growth"....hahah....that probably doesn't make much sense but maybe you get a sense of what I'm thinking of? Or maybe you have a different solution?