You can trigger each 15 min. If you want to trigger each 15 min but only in between 9:30am and 12pm you can use the 15 min trigger and check the datetime before executing your main function.
You can check if your time is inside the range using this snippet from RobG answer at How to check time between range using javascript:
var range = ['09:30','12:00'];
function isInRange(value, range) {
return value >= range[0] && value <= range[1];
}
var date = new Date();
var currentTime = date.getHours + ':' + date.getMinutes;
if(isInRange(currentTime ,range)){
mainFunction();
}
I didn't test this, but it should give you the idea. Note that 'new Date()' will get the time information based on the server time.