function calendarBasedReply() { var interval = 1; // if the script runs every minute; change otherwise var date = new Date(); var timeFrom = Math.floor(date.valueOf() / 1000) - ((60 * interval) + 1); var threads = GmailApp.search('is:inbox after:' + timeFrom); var shouldMarkAsReadAfterReply = false var shouldAlwaysMarkAsRead = false date.setMinutes(date.getMinutes() - interval) Logger.log(timeFrom) if (threads.length <= 0) { console.info("no threads present, no reply needed") return } // Replace the calender id with the correct calendar ID var calendarId = 'placeholder@group.calendar.google.com' var events = Calendar.Events.list(calendarId, { timeMin: date.toISOString(), singleEvents: true, orderBy: 'startTime', maxResults: 3 }); for (var i = 0; i < threads.length; i++) { console.info("thread ", i, " is unread ", threads[i].isUnread()) if (threads[i].isUnread()) { if (shouldAlwaysMarkAsRead){ threads[i].markRead(); } for (var i = 0; i < events.items.length; i++) { var event = events.items[i] var begin = new Date(event.start.dateTime) console.info("begin " + begin + " last message " + threads[i].getLastMessageDate()) if (begin < threads[i].getLastMessageDate()) { if (shouldMarkAsReadAfterReply){ threads[i].markRead(); } threads[i].reply("", { htmlBody: event.description }) threads[i].markImportant() break } } } } }