To expand on what Laurie said, when the script is run via a time-driven trigger, it may be that you cannot use SpreadsheetApp.getActiveSheet() to get the sheet that you're looking for because there is no active sheet when it is run on a time trigger. With the edit and change triggers, a user has the spreadsheet open and is looking at (and made changes/edits to) the active sheet, so the code will work in those cases. However, Google doesn't have your spreadsheet open to a specific sheet when the time trigger goes off.
To confirm that this is the problem, you can check your execution log for errors that will say something to the effect of "sheet not defined" or "getActiveSheet is not a valid method of undefined".
To fix this, you'll need to explicitly name the sheet you're trying to get. You can do that with the code below:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); //this should work even in the time-based trigger context because it is a container-bound script
var sheet = spreadsheet.getSheetByName('PUT THE NAME OF YOUR SHEET IN HERE');
If, for some reason, SpreadsheetApp.getActiveSpreadsheet() doesn't work, you could also use SpreadsheetApp.openById() (
ref))or SpreadsheetApp.openByUrl() (
ref).