function myEmailSchedule() { // email variables var emailAddress = "blah@gmail.com"; var emailMessage = "Task message"; var emailSubject = "Task Item Due"; // date variables var dayInMilliseconds = 86400000; // 24 * 60 * 60 * 1000 var dateToday = parseInt((new Date().setHours(0,0,0,0)) / dayInMilliseconds); // get the spreadsheet var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); // getRange(row, column, numRows, numColumns) var myColumn = mySpreadsheet.getRange(1, 1, mySpreadsheet.getLastRow(), 1); var myValues = myColumn.getValues(); for (var i = 0; i < myValues.length; i++) { var dataDay = parseInt(myValues[i][0].getTime() / dayInMilliseconds); // is tomorrow 14 or 28 days from the spreadsheet date? if (dataDay === dateToday - 13) || (dataDay === dateToday - 27) { MailApp.sendEmail(emailAddress, emailSubject, emailMessage); } } } function createTimeDrivenTriggers() { // Trigger every day at 09:00 UTC ScriptApp.newTrigger('myEmailSchedule') .timeBased() .atHour(9) .everyDays(1) .inTimezone('UTC') .create(); }