It depends what you want. If you want something that will, eg, cast tranq if and only if healing totem is on cooldown, then no, because Blizzard specifically restrict your ability to do that. They want one "GCD" spell per hardware action, and restrict / ban things to keep it so. If you really want, though, you can google the current techniques for one button rotation macros, and all. Just be aware that you might end up banned if one of those is considered exploiting rather than just dubious.
If you just want the rotation, you can use `/castsequence` to create a "rotation" of spells -- each time you press the button it will move on to the next item in the sequence. Various options like "reset if the button has not been touched for N seconds" or "reset when I change target" exist, but you can't, eg, "always reset after 60 seconds, no matter what".
Those end up not so useful unless you *literally* have a strict rotation; these days, pretty much nothing is, because the devs strongly favour priority lists to rotations, and so built all the classes that way. (It probably isn't a coincidence that a priority list based class can't have a one button macro built for it.