Keep in mind that with the default cast at the end, it will cast on your target if you don’t have a mouseover even if you are channeling (as that one doesn’t have a nochanneling condition). If you never want to have it cast while channeling, use the following:
(I’m specifying the spell in showtooltip because if you don’t, if you are using the “?” icon for your macro, it will revert to “?” whenever you are channeling, which some people find annoying.)
Finally, I don’t play a Warlock, but if Drain Soul is only ever cast on enemies and not friendlies, it’s better to use harm than exists. Otherwise the macro won’t cast on your target if you have your mouse sitting over something friendly.