diff --git a/Customer_Notes/G2/08.21.23.norg b/Customer_Notes/G2/08.21.23.norg new file mode 100644 index 00000000..fc63eaa2 --- /dev/null +++ b/Customer_Notes/G2/08.21.23.norg @@ -0,0 +1,13 @@ +* New Learning Paths + - G2 for Sales and Onboarding learning path to launch in October - mid-October is the most likely. + - The sales one will need to be re-written from the sellers POV. + - What is a seller? A customer like Northpass is a seller. A buyer will go to the NP page and read reviews. + - Sellers are G2 Customers. + - Should just be small edits to change the perspective. + - Question about LPs: She wants to know about two additional custom certs. Does she have to pay? + - "Everyone is talking about G2U" - internally its a buzz. + - Claims that there is no budget but may be able to wrangle a few bucks for the certs. + - New LPs will be pretty similar in content and structure as the previous. + - Will need to redo quizzes for the new learning paths + + TODO: Submit ticket to transfer RTE elements: General, Resource, Course, Accordion diff --git a/Scripts/API_Tests/Apikeys.py b/Scripts/API_Tests/Apikeys.py index f9fcac15..1169fdd1 100644 --- a/Scripts/API_Tests/Apikeys.py +++ b/Scripts/API_Tests/Apikeys.py @@ -1,4 +1,4 @@ -skuid = "84GO7zb7a990UJrnFJqiYcd0m" +skuid = "shdX7ht5PZHoOBKOZqZsTMaCJ" unknown = "SlpQlju219WnWogn94dQUT6Yt" forcemanager = "3ia7mWFkdeALYQFYoB51yh6Ov" talkspace_core = "2vfHw6ksqGfT1gUhPM8pXx2wW" diff --git a/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/.clasp.json b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/.clasp.json new file mode 100644 index 00000000..b60a700f --- /dev/null +++ b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/.clasp.json @@ -0,0 +1 @@ +{"scriptId":"169D4glCNoF91joR7OnS0RdqOb4Tpv8n-FbRRjCkfqjBtHv4Z75N_agFK","rootDir":"/Users/normrasmussen/Documents/Work/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber"} diff --git a/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/Code.js b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/Code.js new file mode 100644 index 00000000..279a073a --- /dev/null +++ b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/Code.js @@ -0,0 +1,113 @@ +var SOURCE_CALENDAR_ID = 'nrasmussen@gainsight.com'; // OR the full calendar id including @something.calendar.google.com +var SCRUBBED_CALENDAR_ID = 'c_9ad3baa9ffa4f385829b7618918d123d3b2c39a111a45d1d645b0e29d8fda68b@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; + +/** + * Look through the source calendar and copy all non-all-day events to the scrubbed calendar + */ +function syncCalendarAfterScrubbing() { + // Define the calendar event date range to search. + var today = new Date(); + var futureDate = new Date(); + futureDate.setDate(futureDate.getDate() + WEEKS_IN_ADVANCE*7); + var lastRun = PropertiesService.getScriptProperties().getProperty('lastRun'); + lastRun = lastRun ? new Date(lastRun) : null; + + if (isTimeUp(today, new Date())) { + Logger.log('Execution time about to hit quota limit; execution stopped.'); + return; + } + + // find events that are not all-day in the specified date range. + // Import each of those to the scrubbed calendar. + var count = 0; + var events = findEvents(SOURCE_CALENDAR_ID, today, futureDate, lastRun); + events.forEach(function(event) { + event.organizer = { + id: SCRUBBED_CALENDAR_ID + } + event.attendees = []; + Logger.log('Importing: %s', event.summary); + try { + Calendar.Events.import(event, SCRUBBED_CALENDAR_ID); + count++; + } catch (e) { + Logger.log( + 'Error attempting to import event: %s. Skipping.', e.toString()); + } + }); + + PropertiesService.getScriptProperties().setProperty('lastRun', today); + Logger.log('Imported ' + count + ' events'); + + var executionTime = ((new Date()).getTime() - today.getTime()) / 1000.0; + Logger.log('Total execution time (s) : ' + executionTime); ; +} + +/** + * 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: true + }; + 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 the event is all-day + if (item.start.date) { + return false; + } + 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; +} \ No newline at end of file diff --git a/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/appsscript.json b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/appsscript.json new file mode 100644 index 00000000..0d365ad7 --- /dev/null +++ b/Scripts/GAS_GS/HomeAssistant_Calendar_Scrubber/appsscript.json @@ -0,0 +1,14 @@ +{ + "timeZone": "America/New_York", + "dependencies": { + "enabledAdvancedServices": [ + { + "userSymbol": "Calendar", + "version": "v3", + "serviceId": "calendar" + } + ] + }, + "exceptionLogging": "STACKDRIVER", + "runtimeVersion": "V8" +} \ No newline at end of file