-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathautoreminder.gs
More file actions
52 lines (45 loc) · 2.05 KB
/
Copy pathautoreminder.gs
File metadata and controls
52 lines (45 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function scheduleForCalendars() {
const dayOfWeek = parseInt(Utilities.formatDate(new Date(), CONFIG.timezone, 'u'), 10);
// If today is Saturday or Sunday, do not send reminders for tomorrow.
if (CONFIG.weekendDays.indexOf(dayOfWeek) !== -1) return;
CONFIG.reminderSchedules.forEach(schedule => {
const increment = adjustIncrementForWeekend(new Date(), schedule.daysAhead);
CONFIG.calendarIds.forEach(id =>
scheduleTaggedReminders(id, schedule, increment)
);
});
}
function scheduleTaggedReminders(calendarId, schedule, increment) {
const calendar = CalendarApp.getCalendarById(calendarId);
if (!calendar) throw new Error(`Calendar not found: ${calendarId}`);
const today = new Date();
const targetDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + increment, 0, 0, 0);
const endOfTargetDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + increment, 23, 59, 59);
const events = calendar.getEvents(targetDay, endOfTargetDay);
events.forEach(event => {
const description = event.getDescription() || '';
if (shouldScheduleReminderForEvent(description, schedule)) {
console.log("remind: " + event.getTitle());
const now = new Date();
const triggerTime = getTriggerTimeForReminder(schedule, event, now);
if (schedule.daysAhead === 0 && (!triggerTime || triggerTime <= now)) {
console.log("skip: reminder time has already passed for " + event.getTitle());
return;
}
const uid = Utilities.getUuid();
const eventData = {
uid: uid,
title: event.getTitle(),
startTime: event.getStartTime(),
description: description,
// This sends emails to everyone in the calendar event
guests: event.getGuestList().map(g => g.getEmail()),
// While testing, only sending reminder to myself for now
// guests: []
triggerTime: triggerTime,
reminderDaysAhead: schedule.daysAhead
};
prepReminderForEvent(eventData);
} else console.log("skip: " + event.getTitle());
});
}