G2 Script Completed

This commit is contained in:
Norm Rasmussen
2022-11-21 16:08:13 -05:00
parent 53cb80e773
commit d54f1e926a
7 changed files with 2114 additions and 59 deletions

View File

@ -153,3 +153,15 @@ They feel like this has been talked about for a longtime. Just waiting for a GO
* Goal for today: finish all the quizzes for the Profile Performance and Lead Management. * Goal for today: finish all the quizzes for the Profile Performance and Lead Management.
* Something that's difficult: Each section has limited information so you can only create so many questions per section, goal of 3 questions per section. * Something that's difficult: Each section has limited information so you can only create so many questions per section, goal of 3 questions per section.
* She likes how easy it is to change the questions. * She likes how easy it is to change the questions.
## 11/21/2022
### Analytics, Salesforce, Other Items
Katlin compared numbers with Erin and the number of unique logins and accounts created were off.
Not sure where Katlin pulled her numbers. Erin pulled School Acitivity report.
Re-add the MCA to the G2 Google Sheets.
CEO is _very_ excited for the numbers of G2U and wants the cert done ASAP.
* Erin asked about a group of courses and issuing a cert.
* Clickup has a great university that she likes
* Adding a cert to someone's linkedin is a huge component about this. They want this to be marketing focused
* She now wants to think about Learning Paths. Buyer Intent Expert, Review Expert,
* No timeline for how fast this should be done. But CEO is very excited and expecting this soon.

View File

@ -86,3 +86,23 @@
* Yes, video reosurces are not playing nicely with iOS. * Yes, video reosurces are not playing nicely with iOS.
* After the video is over, it takes over the entire screen and is hard to exit. * After the video is over, it takes over the entire screen and is hard to exit.
## 11/21/2022
###
* Screens of telling the story of "how to get there"
* Open app, click resource center, pick random resource --> walk through the resource itself
* This will be embedded into a PPT deck
* On deck, this needs to be done right now! Next few hours.
* Charlie is working on next steps for design and flow of content
* This is for drivers given the ability to go into any resource of their choice.
* After random activity, once at end of course, they won't see "incomplete" activity screen, but go back to course overview page.
* If you _do_ finish all activities, it will bring you to resource center home page
* Video Resources: auto launches into video (iOS), and autoorients to full screen.
* Can Wistia do chapters? Yes. Wistia can add chapters, but how to do it programmatically?
TODO: * We can add the chapters, but we will need to find a way to do it easily.
Back story to Krystal's requests:
* They just had some research done about user experience with the resource center
* There was other feedback with the content that they want to discuss
* Mostly, it will be a big text-based resource lift
* You should be able to read and scan very quickly
* The key is, the search feature _*really*_ needs to be improved. Thorough, neat, well laid out, etc.
* Over the next week, they are making a wishlist for the next year.

View File

@ -1,13 +1,13 @@
import requests import requests
import urllib.parse
baseUrl = "https://api.northpass.com/v2/people/"
baseUrlname = "https://api.northpass.com/v2/people?filter[name][eq]=" baseUrlname = "https://api.northpass.com/v2/people?filter[name][eq]="
baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]=" baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]="
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2 apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2
#apiKey = "6hUfJdAartHTHhHc0WIRZYPWe" #Walmart #apiKey = "6hUfJdAartHTHhHc0WIRZYPWe" #Walmart
def getfromName(baseUrlname, apiKey): def getfromName(baseUrlname, apiKey):
name = "Norm Test Testing Norm" name = "Someone else"
url = baseUrlname + f"{name}" url = baseUrlname + f"{name}"
headers = { headers = {
"accept": "*/*", "accept": "*/*",
@ -15,15 +15,19 @@ def getfromName(baseUrlname, apiKey):
"content-type": "application/json", "content-type": "application/json",
} }
response = requests.get(url, headers=headers) response = requests.get(url, headers=headers)
if response.status_code == 200:
print("200 Response!")
else:
print("Another error! " + response.status_code)
response = response.json() response = response.json()
print(response) #print(response)
uuid = response["data"][0]["id"] #uuid = response["data"][0]["id"]
print("Learner ID:" ) #print("Learner ID:" )
print(uuid) #print(uuid)
def getfromEmail(baseUrlemail, apiKey): def getfromEmail(baseUrlemail, apiKey):
email = "norm%2Bg2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work. #email = "norm2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work.
#email = "aaron.rodgers@corpay.com" email = " "
url = baseUrlemail + f"{email}" url = baseUrlemail + f"{email}"
print(url) print(url)
headers = { headers = {
@ -32,12 +36,30 @@ def getfromEmail(baseUrlemail, apiKey):
"content-type": "application/json", "content-type": "application/json",
} }
response = requests.get(url, headers=headers) response = requests.get(url, headers=headers)
response = response.json()
print(response) print(response)
if response.status_code == 200:
print("200 Error!")
else:
print("Another Error!")
response = response.json()
#print(response)
uuid = response["data"] uuid = response["data"]
print("Learner ID:" ) #print("Learner ID:" )
print(uuid) #print(uuid)
def getfromUuid(baseUrl, apiKey):
uuid = "57b2b5eb-aa56-4cee-bb32-8c678a2de1b7"
url = baseUrl + uuid
headers = {
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)
if __name__ == "__main__": if __name__ == "__main__":
getfromEmail(baseUrlemail, apiKey) getfromUuid(baseUrl, apiKey)
#getfromEmail(baseUrlemail, apiKey)
#getfromName(baseUrlname, apiKey) #getfromName(baseUrlname, apiKey)

View File

@ -1,42 +1,81 @@
import requests import requests
import os from collections import Counter
from datetime import date
import pandas as pd import pandas as pd
basecsv = "/Users/normrasmussen/Documents/Northpass/Scripts/G2_Unenroll/g2mca.csv" basecsv = "/Users/normrasmussen/Documents/Northpass/Scripts/G2_Unenroll/g2mca_112122.csv"
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2
def mainFunc(basecsv): def mainFunc(basecsv, apiKey):
readData = pd.read_csv( readData = pd.read_csv(
basecsv, basecsv,
index_col=False, index_col=False,
) )
try: readData.loc[readData['Course Name'].isin([
readData.loc[ 'G2 Profile Anatomy', 'Profile Performance & Lead Management',
readData['Course Name'].isin(['G2 Profile Anatomy'])] 'Review Tracking & Brand Building', 'The Review Rundown'])]
readData.loc[ extractedList = readData.loc[readData['Attempt Start'].isnull(),'Email'].tolist()
readData['Course Name'].isin('Profile Performance & Lead Management')] fourOccs = Counter(extractedList)
readData.loc[ finalNames = []
readData['Course Name'].isin('Review Tracking & Brand Building')] for name, occurences in fourOccs.items():
readData.loc[ if occurences == 4:
readData['Course Name'].isin('The Review Rundown')] finalNames.append(name)
extractedList = readData.loc[ findUuids(finalNames, readData, apiKey)
readData['Attempt Start'].isnull(),
'Learner Name'].tolist()
print(extractedList)
# newList = [*set(extractedList)]
#findUuids(newList, readData)
except:
print("Not Working")
#def findUuids(newList, readData): def findUuids(finalNames, readData, apiKey):
# try: emailUuid = []
# for name in newList: uuidList = []
# uuidList = readData.loc[ deactivateUuid = {}
# readData['Learner Name'] == name), try:
# 'uuid'.tolist()] for name in finalNames:
# print(uuidList) baseUrlname = "https://api.northpass.com/v2/people?filter[email][eq]="
# except: name = name
# print("An error occured") url = baseUrlname + f"{name}"
headers = {
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
response = response.json()
uuid = response["data"][0]["id"]
uuidList.append(uuid)
deactivateUuid.update({name: uuid})
emailUuid.append(deactivateUuid)
except:
print("An error occured")
finally:
print(deactivateUuid)
removeFromGroup(uuidList, apiKey)
def removeFromGroup(uuidList, apiKey):
numRemoved = 0
badUuid = []
for uuid in uuidList:
uuidList = []
url = f"https://api.northpass.com/v2/people/{uuid}/relationships/groups"
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": apiKey
}
payload = {"data": [
{
"id": "d78af2ad-a6c8-4016-90a4-fb00bcc67891",
"type": "membership-groups"
}
]}
response = requests.delete(url, json=payload, headers=headers)
status = response.status_code
if response.status_code == 200:
print(f"UserID {uuid} okay to be deleted.")
numRemoved += 1
uuidList.append(uuid)
else:
print(f"Some other error {status} for {uuid}")
badUuid.append(uuid)
print(f"Complete! {numRemoved} people removed from group.")
print("Bad UUIDS: ")
print(badUuid)
if __name__ == "__main__": if __name__ == "__main__":
mainFunc(basecsv) mainFunc(basecsv, apiKey)

File diff suppressed because it is too large Load Diff

View File

@ -4,36 +4,36 @@
* [ ] (Talkspace) [10/27/2022] Turn on Workflows for Talkspace BBHR * [ ] (Talkspace) [10/27/2022] Turn on Workflows for Talkspace BBHR
* [ ] (Talkspace) [10/27/2022] Get designs for Learning Path Customization & we can talk about categories * [ ] (Talkspace) [10/27/2022] Get designs for Learning Path Customization & we can talk about categories
* [ ] (Talkspace) [10/27/2022] Password protection for a course when prompted. * [ ] (Talkspace) [10/27/2022] Password protection for a course when prompted.
* [ ] (Talkspace) [10/27/2022] See if in NPP school we can remove/delete not activated people. * [X] (Talkspace) [10/27/2022] See if in NPP school we can remove/delete not activated people.
* [ ] (Talkspace) [10/27/2022] Pull report of all users in NPP with activated/deactived status * [X] (Talkspace) [10/27/2022] Pull report of all users in NPP with activated/deactived status
* [ ] (Wildhealth) [10/31/2022] Pass PTO information onto Brian so he knows about the support tickets from Baeleigh & WildHealth. * [ ] (Wildhealth) [10/31/2022] Pass PTO information onto Brian so he knows about the support tickets from Baeleigh & WildHealth.
* [ ] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling. * [X] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling.
* [-] (Aiim) [11/08/2022] Send DV Accredible Interface with Badging and Certs. Aiim uses accredible. * [X] (Aiim) [11/08/2022] Send DV Accredible Interface with Badging and Certs. Aiim uses accredible.
* [ ] (Aiim) [11/08/2022] Create a QBR report for next month's meeting. Analytics, product info. Review usage, etc. * [ ] (Aiim) [11/08/2022] Create a QBR report for next month's meeting. Analytics, product info. Review usage, etc.
* [ ] (Amyris) [11/08/2022] Setup Quarterly Looker Pull of MCA to be sent to Nicole. Year to Date, MCA. Next one in January. * [ ] (Amyris) [11/08/2022] Setup Quarterly Looker Pull of MCA to be sent to Nicole. Year to Date, MCA. Next one in January.
* [ ] (SwiftMedical) [11/08/2022] Create Tabs & categories on catalog page - deciding on design. * [X] (SwiftMedical) [11/08/2022] Create Tabs & categories on catalog page - deciding on design.
* [ ] (Talkspace) [11/08/2022] If a course a is at 100% and is a 1099 course, remove from dashboard * [ ] (Talkspace) [11/08/2022] If a course a is at 100% and is a 1099 course, remove from dashboard
* [ ] (Talkspace) [11/08/2022] Remove Footer Completely no Dash no LPs * [ ] (Talkspace) [11/08/2022] Remove Footer Completely no Dash no LPs
* [ ] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer * [ ] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer
* [ ] (Northpass) [11/09/2022] Start GrowthPass #6 * [ ] (Northpass) [11/09/2022] Start GrowthPass #6
* [ ] (Northpass) [11/09/2022] Complete SOC 2 Training in Northpass University for employees. * [X] (Northpass) [11/09/2022] Complete SOC 2 Training in Northpass University for employees.
* [ ] (PUK) [11/09/2022] Check if we need to amend and re-send the Psychiatry-UK Agreement based on the hold until end of February. * [X] (PUK) [11/09/2022] Check if we need to amend and re-send the Psychiatry-UK Agreement based on the hold until end of February.
* [ ] (Northpass) [11/09/2022] Talk to prouct about updating the default admin invitation email content with support links, northpass academy, etc * [X] (Northpass) [11/09/2022] Talk to prouct about updating the default admin invitation email content with support links, northpass academy, etc
* [ ] (SPSCommerce) [11/09/2022] Create some HTML design updates for under the normal cards on the training events page. * [X] (SPSCommerce) [11/09/2022] Create some HTML design updates for under the normal cards on the training events page.
* [ ] (Skuid) [11/11/2022] Send Jessica questions about who is the super admin in Hubspot and ask her to setup a private or public app for our integrations. * [X] (Skuid) [11/11/2022] Send Jessica questions about who is the super admin in Hubspot and ask her to setup a private or public app for our integrations.
* [ ] (Skuid) [11/11/2022] Send Alexa the WildHealth Style report for each Learning Path as a test. * [ ] (Skuid) [11/11/2022] Send Alexa the WildHealth Style report for each Learning Path as a test.
* [ ] (Skuid) [11/11/2022] Ask Chris to help with Learning Paths and Skuid Reports. * [X] (Skuid) [11/11/2022] Ask Chris to help with Learning Paths and Skuid Reports.
* [ ] (Zenjob) [11/11/2022] Ask if we can do a custom integration with Salesforce to send assignment submission pictures * [ ] (Zenjob) [11/11/2022] Ask if we can do a custom integration with Salesforce to send assignment submission pictures
* [ ] (Zenjob) [11/11/2022] Can we pass information INTO a Typeform survey so that a learner doesn't have to enter their name? * [ ] (Zenjob) [11/11/2022] Can we pass information INTO a Typeform survey so that a learner doesn't have to enter their name?
* [ ] (Zenjob) [11/11/2022] Change Back to my courses to the correct german ([see notes](Zenjob.md)) and remove `/app/dashboards` link, it should go to `/app/courses` * [X] (Zenjob) [11/11/2022] Change Back to my courses to the correct german ([see notes](Zenjob.md)) and remove `/app/dashboards` link, it should go to `/app/courses`
* [ ] (Zenjob) [11/11/2022] Ask Sophie about Shopify integration details and what they want to accomplish with selling courses. * [ ] (Zenjob) [11/11/2022] Ask Sophie about Shopify integration details and what they want to accomplish with selling courses.
* [ ] (Northpass) [11/11/2022] Submit ticket for a custom page creation in Northpass Academy that ONLY shows Admin Onboarding Courses. * [ ] (Northpass) [11/11/2022] Submit ticket for a custom page creation in Northpass Academy that ONLY shows Admin Onboarding Courses.
* [ ] (JJSV) [11/14/2022] Contact us should go to a FORM not an email - remove link all together for now make it inactive * [X] (JJSV) [11/14/2022] Contact us should go to a FORM not an email - remove link all together for now make it inactive
* [ ] (JJSV) [11/14/2022] Opt out for emails - Comms Changes * [X] (JJSV) [11/14/2022] Opt out for emails - Comms Changes
* [ ] (JJSV) [11/14/2022] Upload the second video to the properties for us to test for playability.If it works, Melinda can feel confident about future videos. * [X] (JJSV) [11/14/2022] Upload the second video to the properties for us to test for playability.If it works, Melinda can feel confident about future videos.
* [ ] (JJSV) [11/14/2022] Update Registration Privacy Policy with Vision Pro Legal notice at "jnjvisionpro.com/legal-notice" * [ ] (JJSV) [11/14/2022] Update Registration Privacy Policy with Vision Pro Legal notice at "jnjvisionpro.com/legal-notice"
* [ ] (JJSV) [11/14/2022] MAKE SURE YOU UPLOAD THE AUDIO STUFF TODAY! Upload podcasts to AWS and upload the SCORM so she has examples of both. * [ ] (JJSV) [11/14/2022] MAKE SURE YOU UPLOAD THE AUDIO STUFF TODAY! Upload podcasts to AWS and upload the SCORM so she has examples of both.
* [ ] (TripleSeat) [11/15/2022] Get Brian ChurnZero information * [ ] (TripleSeat) [11/15/2022] Get Brian ChurnZero information
* [ ] (TripleSeat) [11/15/2022] Screenshots of AppCues Examples * [ ] (TripleSeat) [11/15/2022] Screenshots of AppCues Examples
* [ ] (TripleSeat) [11/15/2022] Send Holly/Katie details of what needs to be done for embedding. * [ ] (TripleSeat) [11/15/2022] Send Holly/Katie details of what needs to be done for embedding.
* [ ] (Talkspace) [11/15/2022] Create video showing how to setup a Webhook in Fountain for Molly and Taylor to talk to Gracie about. The goal is for a webhook to fire when someone completes a stage in Fountain that attests that they are seeing clients and that would enroll them in their appropriate group and courses. * [X] (Talkspace) [11/15/2022] Create video showing how to setup a Webhook in Fountain for Molly and Taylor to talk to Gracie about. The goal is for a webhook to fire when someone completes a stage in Fountain that attests that they are seeing clients and that would enroll them in their appropriate group and courses.