diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 87d13862..00000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.mind/data/20220906094735-Northpass.md b/.mind/data/20220906094735-Northpass.md deleted file mode 100644 index 9d5214b5..00000000 --- a/.mind/data/20220906094735-Northpass.md +++ /dev/null @@ -1 +0,0 @@ -# Northpass \ No newline at end of file diff --git a/.mind/state.json b/.mind/state.json deleted file mode 100644 index ff35e356..00000000 --- a/.mind/state.json +++ /dev/null @@ -1 +0,0 @@ -{"icon":" ","data":".mind\/data\/20220906094735-Northpass.md","uid":"20220906094343","contents":[{"text":"Northpass"}],"type":1} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 36dd28b0..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Launch and Debug Standalone Blazor WebAssembly App", - "type": "blazorwasm", - "request": "launch", - "cwd": "${workspaceFolder}/CS_Todo" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 46a16749..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "cSpell.ignoreWords": [], - "cSpell.words": [] -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 24404827..00000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/CS_Todo/CS_Todo.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/CS_Todo/CS_Todo.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "--project", - "${workspaceFolder}/CS_Todo/CS_Todo.csproj" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/CustomerNotes/RecastSoftware.md b/CustomerNotes/RecastSoftware.md index 4aad5154..bd54e16c 100644 --- a/CustomerNotes/RecastSoftware.md +++ b/CustomerNotes/RecastSoftware.md @@ -4,60 +4,85 @@ Chris is main POC for content Tech stack manager for user manager -Alison is Chris' back up +Alison is Chris' back up End of Q3 Launch, maybe a soft launch? Moving to Vegas, 2 weeks gone in - August 22-Sept 5 -* Content: + +* Content: 5-7 courses, completely thought out with quizzes etc Each course to a different audience No certification just yet - worry about it later. Can we MVP launch by September 1? -Primary objective is solid courses, showing off Recast's top tools -Can QA team test in a shorter time period? Currently, 2 weeks -Advocacy program is key customers, a larger base with more than just the academy -There will also be an internal team - SEs for technical, Marketing for branding etc, +Primary objective is solid courses, showing off Recast's top tools +Can QA team test in a shorter time period? Currently, 2 weeks +Advocacy program is key customers, a larger base with more than just the academy +There will also be an internal team - SEs for technical, Marketing for branding etc, For design - chris is going to have a design brief with the marketing team for a kick-off -Alison out week of July 11th +Alison out week of July 11th Question: discussed during sales process, badges and points Back fill badges * [ ] Test Todo - -- [X] Send ticket for font changes + +* [X] Send ticket for font changes [X] Northpass ACademy Dashboard Personalized Copy, same as NP Academy [X] Keep learning path card formatting, scroll left to right -[X] Calendar - does Recast have an embeddable calendar? Feed is okay instead of calendar replicate Northpass academy calendar -Chris to provide blog feed -DV featured courses should have description short description -remove events leave or remove column +[X] Calendar - does Recast have an embeddable calendar? Feed is okay instead of calendar replicate Northpass academy calendar +Chris to provide blog feed +DV featured courses should have description short description +remove events leave or remove column main page links up top like swift -RTE within course viewer not picking up font change +RTE within course viewer not picking up font change ## 11/15/2022 -* Chris to grab screenshots from all the videos that are to be uploaded to Wistia for the non-video. + +* Chris to grab screenshots from all the videos that are to be uploaded to Wistia for the non-video. * Going live tomorrow - 11/16 -* 14 out of the 29 people responded to Recast saying they want to be registered and part of the academy. -* Chris will send out beta test questionnaire -* After he finished everything, he realized that the nature of the software (which isn't exciting, but necessary), is quite boring which means the courses can get a bit boring. +* 14 out of the 29 people responded to Recast saying they want to be registered and part of the academy. +* Chris will send out beta test questionnaire +* After he finished everything, he realized that the nature of the software (which isn't exciting, but necessary), is quite boring which means the courses can get a bit boring. * After this beta, we will find out if his learners love the academy or not. "It's better than documentation" -* Hard & Full launch of the academy on December 5th. +* Hard & Full launch of the academy on December 5th. * Logic for december 5th? December becomes a very slow season for tech industry - * They have a number of initiatives company wide - * Conflict between deadlines and they don't want to take away from those initiatives - * Email that will correspond with another campaign in the company + * They have a number of initiatives company wide + * Conflict between deadlines and they don't want to take away from those initiatives + * Email that will correspond with another campaign in the company *Zero State Messages* -* If someone has no courses or LPs - what should the zero state message be? -* Should we hide the sub nav option is there are no LP's available? -* Chris to talk to Marketing about what would be best for zero states. +* If someone has no courses or LPs - what should the zero state message be? +* Should we hide the sub nav option is there are no LP's available? +* Chris to talk to Marketing about what would be best for zero states. *Other Items from Chris:* + * He wants to separate intstructors for ILTs and Courses. Why? - * One of his instructors does a review course, but they don't have any webinars right now, but wanted to make it look more full. Not bare bones. - * The problem for Recast is that the people who do webinars are not part of their company. So giving them manager access is a bit concerning. -* Working with IT guy on DNS items. His guy made all the changes (roughly 30 min ago) but Northpass still says pending. -* He couldn't add the TXT record because of string length, he just left it as "recastsoftware". Max length = 1024, Provider = -* TTL is one hour, so it could take some time. + * One of his instructors does a review course, but they don't have any webinars right now, but wanted to make it look more full. Not bare bones. + * The problem for Recast is that the people who do webinars are not part of their company. So giving them manager access is a bit concerning. +* Working with IT guy on DNS items. His guy made all the changes (roughly 30 min ago) but Northpass still says pending. +* He couldn't add the TXT record because of string length, he just left it as "recastsoftware". Max length = 1024, Provider = +* TTL is one hour, so it could take some time. + +## 01/17/2023 + +### Certs, Salesforce, Future + +Stacy Nwokochah - CS Ops, role is new and she has only been there 6 months. + +This quarter goals: + +* 8 courses need to be completed - in a LP +* At the end of that, big exam, learners must pass with a certain score +* Certification! + +Deadline: Chris will have courses/LP done by third week of April. Must be done by April 30th. +Announcement: April 30th. + +They also want to track certs, share on linkedin, etc. + +Stacy: Salesforce Integration, wants to use ChurnZero too. + +Other: Chris giving a webinar "Quick Start Guide for the Academy". He will be teasing Certs and LPs in the webinar. He will show the UI for a learning path and other random objects. If we can have anything ready to show regarding Certs, that would be helpful. The webinar is Next Thursday January 26th. +Ideally, the cert will show that the learner is "Right Click Certified". diff --git a/CustomerNotes/Talkspace.md b/CustomerNotes/Talkspace.md index dae6d23f..43c11774 100644 --- a/CustomerNotes/Talkspace.md +++ b/CustomerNotes/Talkspace.md @@ -262,9 +262,15 @@ Jenna to send the list of courses that she wants us to check and make sure they ### Workflows & Reports -Therapists have 30 days from the date they completed the managed care course. +Therapists have 30 days from the date they completed the managed care course. Add when they completed the entire group of training Need to know: + * Date Managed Care/Getting Started Course completed (Start Date) * All Compliance Courses Completed (Completion Date) -* 30 difference/requirement between those dates. +* 30 difference/requirement between those dates. + + +## 01/17/2023 + +### Standard Meeting diff --git a/Scripts/AE_Reminders/.clasp.json b/Scripts/GoogleScripts/AE_Reminders/.clasp.json similarity index 100% rename from Scripts/AE_Reminders/.clasp.json rename to Scripts/GoogleScripts/AE_Reminders/.clasp.json diff --git a/Scripts/AE_Reminders/AEMissedMeetingData.js b/Scripts/GoogleScripts/AE_Reminders/AEMissedMeetingData.js similarity index 100% rename from Scripts/AE_Reminders/AEMissedMeetingData.js rename to Scripts/GoogleScripts/AE_Reminders/AEMissedMeetingData.js diff --git a/Scripts/AE_Reminders/appsscript.json b/Scripts/GoogleScripts/AE_Reminders/appsscript.json similarity index 100% rename from Scripts/AE_Reminders/appsscript.json rename to Scripts/GoogleScripts/AE_Reminders/appsscript.json diff --git a/Scripts/GoogleScripts/Artera_wowprog/.clasp.json b/Scripts/GoogleScripts/Artera_wowprog/.clasp.json index 07504d9a..9638d26e 100644 --- a/Scripts/GoogleScripts/Artera_wowprog/.clasp.json +++ b/Scripts/GoogleScripts/Artera_wowprog/.clasp.json @@ -1 +1 @@ -{"scriptId":"1TtrlsqzXey172jgJ2O8KLOudCm8p-q8aePsWRS4m3_HgLyOgmO1AWKrY","rootDir":"/Users/normrasmussen/Documents/Northpass/Scripts/GoogleScripts/Artera_wowprog"} +{"scriptId":"1TtrlsqzXey172jgJ2O8KLOudCm8p-q8aePsWRS4m3_HgLyOgmO1AWKrY","rootDir":"/Users/normrasmussen/Documents/Northpass/Scripts/GoogleScripts/Artera_wowprog","projectId":"appscriptslocaldev"} diff --git a/Scripts/GoogleScripts/Artera_wowprog/.clasprc.json b/Scripts/GoogleScripts/Artera_wowprog/.clasprc.json new file mode 100644 index 00000000..1302561f --- /dev/null +++ b/Scripts/GoogleScripts/Artera_wowprog/.clasprc.json @@ -0,0 +1 @@ +{"token":{"access_token":"ya29.a0AX9GBdXiioWBdtoVWI2RMz3w20lAhDMGbSH0G0hvCqUE51N9mNwR6Q2YegprBi-uLPjUQCn-Sff08o1yJUcMYY0jDuO7LCF061zu3Vlh-376Elz5-jXNrePuKaNxB73aLWsBPqKNWjf08RKMCEy2kBDQULaXaCgYKAbYSARASFQHUCsbC2bxYHKbnr9AwbIBf9rfVfQ0163","refresh_token":"1//01cyoCuw3Wr0xCgYIARAAGAESNwF-L9Ir2krbuxda1cDzPQRSodYRr4leW0_Rdu4wcMUtJn1TMn_5-yw-UNSLjOoY-JxbkLZvJ0I","scope":"https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/script.webapp.deploy","token_type":"Bearer","expiry_date":1673971176372},"oauth2ClientSettings":{"clientId":"979249900345-7tlqhlra786jbp15eddnlh9iracitoq8.apps.googleusercontent.com","clientSecret":"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","redirectUri":"http://localhost"},"isLocalCreds":true} diff --git a/Scripts/GoogleScripts/Artera_wowprog/Code.js b/Scripts/GoogleScripts/Artera_wowprog/Code.js index bc44bdf9..8c854f20 100644 --- a/Scripts/GoogleScripts/Artera_wowprog/Code.js +++ b/Scripts/GoogleScripts/Artera_wowprog/Code.js @@ -1,29 +1,67 @@ var now = new Date(); var today = Utilities.formatDate(now, 'America/New_York', 'MM/dd/yyyy'); -const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; -const sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1]; -var lastColumn = sheet2.getLastColumn()+1; -//Logger.log(lastColumn) +const readSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; +const writeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1]; +// This function needs to happen every time the script runs. function writeHeadings() { // Write the new Column Headings - sheet2.getRange(1, lastColumn).setValue("Percent Change"); - sheet2.getRange(1, lastColumn+1).setValue("Progress"); - sheet2.getRange(2, lastColumn+1).setValue(today); - // addtoSheet() + var lastColumn = writeSheet.getLastColumn()+1; + writeSheet.getRange(1, lastColumn).setValue("Percent Change"); + writeSheet.getRange(1, lastColumn+1).setValue("Progress"); + writeSheet.getRange(2, lastColumn+1).setValue(today); + addProgress(lastColumn); } -function addtoSheet() { - var numRows = sheet.getLastRow()-1; // Number of rows to process - var dataRange = sheet.getRange(2, 2, numRows, 3); +// This function takes the progress from Column D of Sheet0 and adds it to Sheet1 +function addProgress(lastColumn, prevColumn) { + // Process Data from Sheet0 + var numRows = readSheet.getLastRow()-1; // Number of rows to process + var dataRange = readSheet.getRange(2, 2, numRows, 3); + // Process First Row from Sheet1 + // var numRows = writeSheet.getLastRow()-1; // Number of rows to process + // var dataRange = writeSheet.getRange(3, 1, numRows, 1); var values = dataRange.getValues(); for (item in values) { var row = values[item]; var course= row[0]; var avgProgress = row [2]; - //var setRow = i+1 - //sheet2.getRange(setRow, 1).setValue(course); - //sheet2.getRange(setRow, 2).setValue(avgProgress); + findRow(course, avgProgress, lastColumn); } } + +function findRow(course, avgProgress, lastColumn) { + var prevColumn = writeSheet.getLastColumn()-2; + var numRows = writeSheet.getLastRow(); + var data = writeSheet.getRange(3,1,numRows,1).getValues(); + for(var i = 0; i= formatWeek) && (missedEntries[1] <= formatNow)) { - meetingCount += 1; - missedEntries.pop(); - missedEntries.toString(); - slackingAEListOne.push(missedEntries); - //Logger.log(slackingAEListOne); - }; - }; - /* Now outside of the if statement: - the array is built, and we want each group to be on a new line, remove the commas and add a hyphen. - The counter counts if there is 1 or more meetings, or not. If 0, it sends a certain message, not tagging anyone. - If it is one or more, it splices by the first array (index 0), adds a new line, and replaces commans with hyphens. - */ - if (meetingCount >= 1) { - var slackingAEListTwo = slackingAEListOne.splice(0).join('\n'); - var finalAEList = slackingAEListTwo.replace(/,/g, ' - '); - // This if statement is going to only tag those who appear in the previous list. - // No need to tag people who have done their work and contribute to clean data. - if (finalAEList.includes('Norm')) { - tagList.push('<@U020KRBDSDQ>'); - } - if (finalAEList.includes('Dan')) { - tagList.push('<@U01P7DTFSQZ>'); - } - if (finalAEList.includes('Charles')) { - tagList.push('<@U01286MQUS2>'); - } - if (finalAEList.includes('Travis')) { - tagList.push('<@UFE3T14UX>'); - } - if (finalAEList.includes('Nick')) { - tagList.push('<@U0276LMA70F>'); - } - if (finalAEList.includes('Mike')) { - tagList.push('<@U027MAQUPM0>'); - } - if (finalAEList.includes('Doug')) { - tagList.push('<@U02CK55FHFX>'); - } - if (finalAEList.includes('Isabel')) { - tagList.push('<@U03019S7R6F>'); - } - if (finalAEList.includes('Ryan')) { - tagList.push('<@U0325CWA3N3>'); - } - var tagUsers = tagList.toString(); - /* - Now, we're building the payload for the Slack Message. - This is very specific and prone to errors, so check that it works using Slack's tool: - https://app.slack.com/block-kit-builder/ - - Copy from Rich: - ":rotating_light::rotating_light::rotating_light: New Meeting Tracker Alert! :rotating_light::rotating_light::rotating_light: - It's your daily reminder to update the new meeting tracker. - If you've been tagged, please address this by EOD." - */ - let payloadText = -{ - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ":rotating_light::rotating_light::rotating_light: New Meeting Tracker Alert! :rotating_light::rotating_light::rotating_light:" - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "It's your daily reminder to update the new meeting tracker." - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "If you've been tagged, please address this by EOD." - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": finalAEList // Sends list with AE, meeting date, and company - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "In case you need it, here's a link to the sheet. :point_right:" - }, - "accessory": { - "type": "button", - "text": { - "type": "plain_text", - "text": "Sales New Meeting Tracker", - "emoji": true - }, - "value": "sales_tracker_link_123", - "url": "https://docs.google.com/spreadsheets/d/150nSuHQLJHpJaYdQ6KHeN7nQ6iexwtnQEpicM77PK8A/edit#gid=0 | First Meeting Tracker", - "action_id": "button-action" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": tagUsers // Tags with slack user numbers if they appear in finalSend - } - } - ] -}; - // This is standard operating procedure to creating the payload and destination - const webhook = "https://hooks.slack.com/services/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"; - const options = { - method: "post", - contentType: "application/json", - muteHttpExceptions: true, - payload: JSON.stringify(payloadText), - }; - const sendMsg = UrlFetchApp.fetch(webhook, options); - var respCode = sendMsg.getResponseCode(); - //Logger.log(sendMsg); // Debug to confirm send - //Logger.log(respCode); // Debug to show errors, if any - /* - This is the else statement that sends a certain message not tagging anyone and saying that data is clean. - */ - } else { - let noMeetingMsg = - { - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ":star::star::star: New Meeting Tracker Alert! :star::star::star:" - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Good job, everyone! All meetings from the last 5 days are up to date. Keep doing what you're doing!" - } - } - ] -}; -// This is standard operating procedure to creating the payload and destination - - const webhook = "https://hooks.slack.com/services/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"; - const options = { - method: "post", - contentType: "application/json", - muteHttpExceptions: true, - payload: JSON.stringify(noMeetingMsg), - }; - const sendMsg = UrlFetchApp.fetch(webhook, options); - var respCode = sendMsg.getResponseCode(); - - //Logger.log(sendMsg); // Debug to confirm send - //Logger.log(respCode); // Debug to show errors, if any -} -}; diff --git a/Scripts/_originals/DeptCalendar.gs b/Scripts/_originals/DeptCalendar.gs deleted file mode 100644 index 244593c7..00000000 --- a/Scripts/_originals/DeptCalendar.gs +++ /dev/null @@ -1,30 +0,0 @@ - - -function createEvent() { - let calendarID = ''; - let eventName = ''; - let startTime = ''; - let endTIme = ''; - let zoomLink = ''; - var event = CalendarApp.getCalendarById(calendarID).create( - eventName, startTime, endTime, zoomLink); - eventID = event.getID(); - } - - -function addLearner(eventID, calendarID) { - let attendeeEmail = '{{ current_person.email }}'; - let calendarID = calendarID; - let eventID = eventID; - - let calendar = CalendarApp.getCalendarById(calendarID); - if (calendar == null) { - return; - } - let event = calendar.getEventById(eventID); - if (event == null) { - return; - } - event.addGuest(attendeeEmail); - - } diff --git a/Scripts/_originals/Gmail_Alerts.gs b/Scripts/_originals/Gmail_Alerts.gs deleted file mode 100644 index aebd806a..00000000 --- a/Scripts/_originals/Gmail_Alerts.gs +++ /dev/null @@ -1,29 +0,0 @@ -/* -The point of this script is to start a timer for each email that comes in -and if the email goes unanswered after a certain amount of time -alert the owner of the account being monitored. -Hopefully, with a slack message. -*/ - -var timerCount = 0; -var emailSubject = getSubject(); -var emailTime = getDate(); -var newEmail; -var emailInbox = isInInbox(); - - -function startTImer() { - -} - -function getMessage() { - if -} - -function compileAlert() { - -} - -function sendAlert() { - -} \ No newline at end of file diff --git a/Scripts/_originals/New_SDR_Meetings_msg.gs b/Scripts/_originals/New_SDR_Meetings_msg.gs deleted file mode 100644 index 8c45e4ca..00000000 --- a/Scripts/_originals/New_SDR_Meetings_msg.gs +++ /dev/null @@ -1,109 +0,0 @@ -const sheetTwo = SpreadsheetApp.getActiveSheet(); -var now = new Date(); -var formatToday = Utilities.formatDate(now, 'America/New_York', 'MM/dd/yyyy'); - -function newMeetings() { - var startRow = 2; // First row of data to process - var numRows = sheetTwo.getLastRow()-1; // Number of rows to process - var dataRange = sheetTwo.getRange(startRow, 1, numRows, sheet.getLastColumn()); - var data = dataRange.getValues(); - var sdrMeeting = []; - - for (i in data) { - var row = data[i]; - var sdr = row[0]; // Column A - var date = Utilities.formatDate(row[3],'America/New_York','MM/dd/yyyy'); // Column D - var company = row[4]; // Column E - var outbound = row[5]; // Column F - let sdrMeetingListOne = [sdr, date, company, outbound]; - if ((sdrMeetingListOne[1] == formatToday) && (sdrMeetingListOne[0] != '') && (sdrMeetingListOne[3] == "Outbound")) { - sdrMeetingListOne.toString(); - sdrMeeting.push(sdrMeetingListOne); - Logger.log(sdrMeetingListOne) - } else if ((sdrMeetingListOne[1] == formatToday) && (sdrMeetingListOne[0] != '')) { - let noMeetingText = - { - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ":star: *C'mon team!* :star:" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "No new meetings today? We can do better than that! Hustle!" - } - }, - ] - } - const webhook = "https://hooks.slack.com/services/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"; - const options = { - method: "post", - contentType: "application/json", - muteHttpExceptions: true, - payload: JSON.stringify(noMeetingText), - }; - const sendMsg = UrlFetchApp.fetch(webhook, options); - var respCode = sendMsg.getResponseCode(); - Logger.log(sendMsg); - Logger.log(respCode); - } - }; - Logger.log(sdrMeeting); - var toSend = sdrMeeting.splice(1).join('\n'); - var getEm = toSend.replace(/,/g, ' - ') - Logger.log(getEm); - let payloadMeetingText = -{ - "blocks": [ - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": ":star: *Pitter Patter!* :star:" - } - }, - { - "type": "divider" - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": "Here's who has meetings today. Get after it boys and girls!" - } - }, - { - "type": "section", - "text": { - "type": "mrkdwn", - "text": getEm - } - }, - { - "type": "image", - "image_url": "https://media.giphy.com/media/3ohjURBuAtWDV8d3SE/giphy.gif", - "alt_text": "inspiration" - } - ] -} - //(array[0] + ", you still need to fill out the cells for" + array[2] + " from " + array[1] + "!\n"); - const webhook = "https://hooks.slack.com/services/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"; - const options = { - method: "post", - contentType: "application/json", - muteHttpExceptions: true, - payload: JSON.stringify(payloadText), - }; - const sendMsg = UrlFetchApp.fetch(webhook, options); - var respCode = sendMsg.getResponseCode(); - Logger.log(sendMsg); - Logger.log(respCode); -}; \ No newline at end of file diff --git a/Scripts/_originals/Sheets>Jira.gs b/Scripts/_originals/Sheets>Jira.gs deleted file mode 100644 index 70db517d..00000000 --- a/Scripts/_originals/Sheets>Jira.gs +++ /dev/null @@ -1,127 +0,0 @@ -/* Pertinent Information and Codes: -Custom Fields: -Channel = customfield_10121 -Campaign = customfield_10120 -SDR = customfield_10122 -Start Date = customfield_10015 - -Users: -Travis Nardin = 5d9cb42c0265ca0db955b965 -Dan Peski = 603318815ddf020069969cad -Norm Rasmussen = 6092af20d353800068863d15 -Michael Valido = 61fbf60cd8d7cf006a90941c -Jon Newfield = 6092af212c2f6c0068ec92c4 -Isabel Katz = 620145241fec260068c107e5 -Charles McGovern = 5eaaf1c4021ae30ba8fcb184 -Nick Zuppe = 60eddda64257a90070aeebef -Doug Goldsmith = 61294a4845f753006951a590 -Nick Appleby = 6183eab7892c420072f9c437 -Quba Williams-Wilfong = 62101fe4e41f76006a6f6510 - -Without accounts: Adan, Drew - -*/ -var count = 0; -var list; -var finalEntry; - -function myFunction() { - var URL = "https://northpass.atlassian.net/rest/api/3/issue/"; - // var accountID = "6092af20d353800068863d15"; - var token = "2NrKYv22TLWnxTo7EhU3633E"; - // var UserCredentials = Utilities.base64Encode(accountID + ":" + token); - var user = "nrasmussen@northpass.com"; - // var pass = "c9QK\>4^fxiHt!"; - var UserCredentials = Utilities.base64Encode(user + ":" + token); - - // Setting up data range and empty arrays - const sheet = SpreadsheetApp.getActiveSheet(); - var startRow = 1; // First col of data to process - var numRows = 1132; // Number of rows to process - var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn()).getValues(); - - for (col in dataRange) { // For a data col within the entire data range - var col = dataRange[col]; - let sdr = col[0]; // Column - A - let name = col[1]; // Column - B - let rawDate = Utilities.formatDate(col[3], 'America/New_York', 'yyyy-MM-dd'); - let bookingDate = Utilities.formatDate(col[2], 'America/New_York', 'MM/dd/yyyy'); // Column - C - let meetingDate = Utilities.formatDate(col[3], 'America/New_York', 'MM/dd/yyyy'); // Column - D - let company = col[4]; // Column - E - let channel = col[5]; // Column - F - let result = col[7]; // Column - H - let campaign = col[8]; // Column - I - let info = col[9]; // Column - J - let list = [sdr, name, rawDate ,bookingDate, meetingDate, company, channel, result, campaign, info]; - list.toString(); - let sdrDict = { - "Mike" : - "61fbf60cd8d7cf006a90941c", - "Nick" : - "60eddda64257a90070aeebef", - "Appleby" : - "6183eab7892c420072f9c437", - "Doug" : - "61294a4845f753006951a590", - "Quba" : - "62101fe4e41f76006a6f6510", - }; - if (list.includes("Unqork")) { - var data = { - "fields": { - "project": { - "key": "NPIPE", - }, - "issuetype": { - "id": "10071", - }, - "summary": list[5], - "description": { - "type": "doc", - "version": 1, - "content": [ - { - "type": "paragraph", - "content": [ - { - "type": "text", - "text": "Booked Date - " + list[3] + '\n' + - "Meeting Date - " + list[4] + '\n' + - "Description from Tracker: " + list[9] + '\n' + - "Last Status - " + list[7] - } - ] - } - ], - }, - "customfield_10015": list[2], // Start (Meeting) Date - rawDate - "customfield_10127": [ // Campaign - list[8] - ], - "customfield_10129": [{"id" : sdrDict[list[0]]}], // SDR - "customfield_10128": [ // Channel - list[6] - ], - } - }, - payload = JSON.stringify(data); - Logger.log(payload); - var headers = { - "Accept": "application/json", - "Content-Type": "application/json", - "Authorization": "Basic " + UserCredentials, - "muteHttpExceptions": true, - } - var options = { - "method": "POST", - "headers": headers, - "payload": payload - } - //Logger.log(options); - var response = UrlFetchApp.fetch(URL, options); - //Logger.log(response); - var respCode = response.getResponseCode(); - //Logger.log(respCode); - } - } -}; \ No newline at end of file diff --git a/Scripts/_originals/WCAWebhooks.gs b/Scripts/_originals/WCAWebhooks.gs deleted file mode 100644 index 4da61039..00000000 --- a/Scripts/_originals/WCAWebhooks.gs +++ /dev/null @@ -1,47 +0,0 @@ -function doGet(e) { - return HtmlService.createHtmlOutput("get request received"); -} - -//this is a function that fires when the webapp receives a POST request -function doPost(e) { - var params = JSON.stringify(e.postData.contents); - params = JSON.parse(params); - var now = new Date(); - var timeAdded = Utilities.formatDate(now,'America/New_York','MM/dd/yyyy'); - - var learnerName = params.substring(params.indexOf('{"name":"') + 7, params.lastIndexOf('"email"')); - learnerName = learnerName.slice(learnerName.indexOf('"') + 1, learnerName.lastIndexOf('"'),); - Logger.log("Name = " + learnerName); - - var learnerEmail = params.substring(params.indexOf('"email":"') + 9, params.lastIndexOf('"full_name"')); - learnerEmail = learnerEmail.slice(learnerName.indexOf('"') + 1, learnerEmail.lastIndexOf('"'),); - Logger.log("Email = " + learnerEmail); - - var courseName = params.substring(params.indexOf('"course_name":"') + 4, params.lastIndexOf('"attributes"')); - courseName = courseName.slice(courseName.indexOf('"') + 3, courseName.lastIndexOf('"'),); - Logger.log("Course = " + courseName); - - var activityName = params.substring(params.indexOf('"title":"') + 4, params.lastIndexOf('"course_name"')); - activityName = activityName.slice(activityName.indexOf('"') + 3, activityName.lastIndexOf('"'),); - Logger.log("Activity = " + activityName); - - var dateCompleted = params.substring(params.indexOf('"updated_at":"') + 4, params.lastIndexOf('"activated_at"')); - dateCompleted = dateCompleted.slice(dateCompleted.indexOf('"') + 3, dateCompleted.lastIndexOf('"'),); - Logger.log("Completed on = " + dateCompleted); - - var sheet = SpreadsheetApp.getActiveSheet(); - var lastRow = Math.max(sheet.getLastRow(),1); - - sheet.insertRowAfter(lastRow); - sheet.getRange(lastRow + 1, 1).setValue(timeAdded); - sheet.getRange(lastRow + 1, 2).setValue(params); - sheet.getRange(lastRow + 1, 3).setValue(learnerName); - sheet.getRange(lastRow + 1, 4).setValue(learnerEmail); - sheet.getRange(lastRow + 1, 5).setValue(courseName); - sheet.getRange(lastRow + 1, 6).setValue(activityName); - sheet.getRange(lastRow + 1, 7).setValue(dateCompleted); - - - SpreadsheetApp.flush(); - return HtmlService.createHtmlOutput("post request received"); -}