Old calendar scrubber google script stopped working, so I re-wrote it to update it and have it better fit into how my schedule changes
This commit is contained in:
1
Scripts/GAS_GS/New_HA_Cal_Scrubber/.clasp.json
Normal file
1
Scripts/GAS_GS/New_HA_Cal_Scrubber/.clasp.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"scriptId":"1hpUsnmWrG4ObGXZNJFxfQ5tzMZo88T8baaHXSn_vxNkQmq7An6i7DyMc","rootDir":"/Users/normrasmussen/Documents/Work/Scripts/GAS_GS/New_HA_Cal_Scrubber"}
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
var SOURCE_CALENDAR_ID = 'nrasmussen@gainsight.com'; // OR the full calendar id including @something.calendar.google.com
|
||||||
|
var SCRUBBED_CALENDAR_ID = 'c_bf82fe2c44dd508f465816c6ba96a0ad45931310a634088bd572c40f9a90459b@group.calendar.google.com';
|
||||||
|
|
||||||
|
function syncTodaysCalendar() {
|
||||||
|
var count = 0
|
||||||
|
// Define the calendar event date range to search.
|
||||||
|
var today = new Date();
|
||||||
|
Logger.log(today);
|
||||||
|
var delEvents = CalendarApp.getCalendarById(SCRUBBED_CALENDAR_ID).getEvents(today, today);
|
||||||
|
for (let i = 0; i < delEvents.length; i++) {
|
||||||
|
delEvents[i].deleteEvent();
|
||||||
|
Logger.log("Today's Events Deleted from Scrubbed Calendar")
|
||||||
|
};
|
||||||
|
|
||||||
|
var mainCal = CalendarApp.getEventsForDay(today);
|
||||||
|
for (let i = 0; i < mainCal.length; i++) {
|
||||||
|
Utilities.sleep(1000);
|
||||||
|
try {
|
||||||
|
mainCal[i].getAllDayStartDate()
|
||||||
|
} catch (ad) {
|
||||||
|
Logger.log(ad)
|
||||||
|
try {
|
||||||
|
CalendarApp.getCalendarById(SCRUBBED_CALENDAR_ID).createEvent(mainCal[i].getTitle(), mainCal[i].getStartTime(), mainCal[i].getEndTime());
|
||||||
|
Logger.log('Importing: %s', mainCal[i].getTitle());
|
||||||
|
count++;
|
||||||
|
} catch (e) {
|
||||||
|
Logger.log(
|
||||||
|
'Error attempting to import event: %s. Skipping.', e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Logger.log('Imported ' + count + ' events');
|
||||||
|
};
|
||||||
3
Scripts/GAS_GS/New_HA_Cal_Scrubber/LiveUpdateofEvent.js
Normal file
3
Scripts/GAS_GS/New_HA_Cal_Scrubber/LiveUpdateofEvent.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
function myFunction() {
|
||||||
|
|
||||||
|
}
|
||||||
136
Scripts/GAS_GS/New_HA_Cal_Scrubber/MassDeleteandImport.js
Normal file
136
Scripts/GAS_GS/New_HA_Cal_Scrubber/MassDeleteandImport.js
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
var SOURCE_CALENDAR_ID = 'nrasmussen@gainsight.com'; // OR the full calendar id including @something.calendar.google.com
|
||||||
|
var SCRUBBED_CALENDAR_ID = 'c_bf82fe2c44dd508f465816c6ba96a0ad45931310a634088bd572c40f9a90459b@group.calendar.google.com';
|
||||||
|
var WEEKS_IN_ADVANCE = 1;
|
||||||
|
|
||||||
|
// The maximum script run time under Apps Script Pro is 30 minutes; this setting
|
||||||
|
// will be used to report when the script is about to reach that limit.
|
||||||
|
// var MAX_PRO_RUNTIME_MS = 29 * 60 * 1000;
|
||||||
|
function syncCalendarAfterScrubbing() {
|
||||||
|
var count = 0
|
||||||
|
// Define the calendar event date range to search.
|
||||||
|
var today = new Date();
|
||||||
|
Logger.log(today);
|
||||||
|
var futureDate = new Date();
|
||||||
|
futureDate.setDate(futureDate.getDate() + WEEKS_IN_ADVANCE*14);
|
||||||
|
Logger.log(futureDate);
|
||||||
|
var delEvents = CalendarApp.getCalendarById(SCRUBBED_CALENDAR_ID).getEvents(today, futureDate);
|
||||||
|
for (let i = 0; i < delEvents.length; i++) {
|
||||||
|
delEvents[i].deleteEvent();
|
||||||
|
Logger.log("Event Deleted from Scrubbed Calendar")
|
||||||
|
};
|
||||||
|
|
||||||
|
var dates = getDatesBetween(today, futureDate);
|
||||||
|
dates.forEach(function(date) {
|
||||||
|
var mainCal = CalendarApp.getEventsForDay(date);
|
||||||
|
Logger.log(date);
|
||||||
|
for (let i = 0; i < mainCal.length; i++) {
|
||||||
|
Utilities.sleep(1000);
|
||||||
|
try {
|
||||||
|
mainCal[i].getAllDayStartDate()
|
||||||
|
} catch (ad) {
|
||||||
|
Logger.log(ad)
|
||||||
|
try {
|
||||||
|
CalendarApp.getCalendarById(SCRUBBED_CALENDAR_ID).createEvent(mainCal[i].getTitle(), mainCal[i].getStartTime(), mainCal[i].getEndTime());
|
||||||
|
Logger.log('Importing: %s', mainCal[i].getTitle());
|
||||||
|
count++;
|
||||||
|
} catch (e) {
|
||||||
|
Logger.log(
|
||||||
|
'Error attempting to import event: %s. Skipping.', e.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Logger.log('Imported ' + count + ' events');
|
||||||
|
};
|
||||||
|
|
||||||
|
//Logger.log(mainCal[i].getTitle());
|
||||||
|
//Logger.log(mainCal[i].getStartTime());
|
||||||
|
//Logger.log(mainCal[i].getEndTime());
|
||||||
|
|
||||||
|
function getDatesBetween(startDate, endDate) {
|
||||||
|
const dates = [];
|
||||||
|
const currentDate = new Date(startDate);
|
||||||
|
const lastDate = new Date(endDate);
|
||||||
|
currentDate.setHours(0, 0, 0, 0);
|
||||||
|
lastDate.setHours(0, 0, 0, 0);
|
||||||
|
while (currentDate <= lastDate) {
|
||||||
|
dates.push(new Date(currentDate));
|
||||||
|
currentDate.setDate(currentDate.getDate() + 1);
|
||||||
|
}
|
||||||
|
return dates;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * In a given calendar, look for non-all-day events
|
||||||
|
// * in events within the specified date range and return any such events
|
||||||
|
// * found.
|
||||||
|
// * @param {string} cal_id the ID of the source calendar
|
||||||
|
// * @param {Date} start the starting Date of the range to examine.
|
||||||
|
// * @param {Date} end the ending Date of the range to examine.
|
||||||
|
// * @param {Date} opt_since a Date indicating the last time this script was run.
|
||||||
|
// * @return {object[]} an array of calendar event Objects.
|
||||||
|
// */
|
||||||
|
// function findEvents(cal_id, start, end, opt_since) {
|
||||||
|
// var params = {
|
||||||
|
// timeMin: formatDate(start),
|
||||||
|
// timeMax: formatDate(end),
|
||||||
|
// showDeleted: false
|
||||||
|
// };
|
||||||
|
// if (opt_since) {
|
||||||
|
// // This prevents the script from examining events that have not been
|
||||||
|
// // modified since the specified date (that is, the last time the
|
||||||
|
// // script was run).
|
||||||
|
|
||||||
|
// params['updatedMin'] = formatDate(opt_since);
|
||||||
|
// }
|
||||||
|
// var results = [];
|
||||||
|
// try {
|
||||||
|
// var response = Calendar.Events.list(cal_id, params);
|
||||||
|
// results = response.items.filter(function(item) {
|
||||||
|
// // Filter out events where the owner of the script has not accepted
|
||||||
|
// if (item.attendees) {
|
||||||
|
// for (person of item.attendees) {
|
||||||
|
// if (person['self'] == true && person['responseStatus'] != "accepted") {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// // Filter out events where the event is all-day
|
||||||
|
// if (item.start.date) {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// Logger.log(item.getDateCreated());
|
||||||
|
// return true;
|
||||||
|
// });
|
||||||
|
// } catch (e) {
|
||||||
|
// Logger.log('Error retriving events for %s; skipping',
|
||||||
|
// e.toString());
|
||||||
|
// results = [];
|
||||||
|
// }
|
||||||
|
// return results;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Return an RFC3339 formated date String corresponding to the given
|
||||||
|
// * Date object.
|
||||||
|
// * @param {Date} date a Date.
|
||||||
|
// * @return {string} a formatted date string.
|
||||||
|
// */
|
||||||
|
// function formatDate(date) {
|
||||||
|
// return Utilities.formatDate(date, 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ssZ');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Compares two Date objects and returns true if the difference
|
||||||
|
// * between them is more than the maximum specified run time.
|
||||||
|
// *
|
||||||
|
// * @param {Date} start the first Date object.
|
||||||
|
// * @param {Date} now the (later) Date object.
|
||||||
|
// * @return {boolean} true if the time difference is greater than
|
||||||
|
// * MAX_PROP_RUNTIME_MS (in milliseconds).
|
||||||
|
// */
|
||||||
|
// function isTimeUp(start, now) {
|
||||||
|
// return now.getTime() - start.getTime() > MAX_PRO_RUNTIME_MS;
|
||||||
|
// }
|
||||||
14
Scripts/GAS_GS/New_HA_Cal_Scrubber/appsscript.json
Normal file
14
Scripts/GAS_GS/New_HA_Cal_Scrubber/appsscript.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"timeZone": "America/New_York",
|
||||||
|
"dependencies": {
|
||||||
|
"enabledAdvancedServices": [
|
||||||
|
{
|
||||||
|
"userSymbol": "Calendar",
|
||||||
|
"version": "v3",
|
||||||
|
"serviceId": "calendar"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exceptionLogging": "STACKDRIVER",
|
||||||
|
"runtimeVersion": "V8"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user