If you show your macro, I can help you modify it to add the random 15 minutes. Or I can show you how I would do it, which may be different from how you want to do it.
You could simply trigger the macro at 8:30 and then Pause for 60*RAND(16).
Alternatively, you could trigger your macro at 8:30 to 8:45 every minute, and then decide at random whether to execute or not, and only if it hadn't already executed that day.
This could be done, but it is quite complex. You use the DAY function to check if it is the same day as you previous executed, as well as whether you have executed today, and you have to also choose a random chance to execute which needs to increase each minute (so 1/16 chance at 8:30, 1/15 chance at 8:31, 1/14 at 8:32, … up to 1/1 at 8:45), presuming the macro has not already done its job today.
If you want me to elaborate on this further, I can do so.
I ended up using cron to schedule this, so all my scheduling stays in one app and not scattered across multiple services. The cron-entry looks like this: 30 08 * * 1-4 /bin/sleep $((0 + $RANDOM \% 600)); open "/Applications/Microsoft Teams.app"