Code:
#showtooltip
/cast [@mouseover,harm][@mouseover,help][exists][@player] Execution Sentence
This would be what you wrote, but de-complicated.
I would suggest a change though, namely replace [exists][@player]with a simple []. That way, it will cast on your normal target if no mouseover exists, and you can cast it on yourself with alt held down. The reason for the change is that now you can force-cast it on yourself with alt, whereas you would have needed to deselect your target with the original macro, in order to cast on yourself.
Also, I suggest a "nodead" in the mouseover conditionals, hotting a dead friend is resulting in a "target is dead" error anyway; also, usually, "exists" is implied by "help"/"harm". (Also, #showtooltip usually works fine without anything).
Resulting in
Code:
#showtooltip
/cast [@mouseover,harm,nodead][@mouseover,help,nodead][] Execution Sentence
EDIT :
Which consequently can be reduced to
Code:
#showtooltip
/cast [@mouseover,exists,nodead][] Execution Sentence