G2 Script Completed
This commit is contained in:
@ -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.
|
||||
* 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.
|
||||
|
||||
## 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.
|
||||
|
||||
@ -86,3 +86,23 @@
|
||||
* 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.
|
||||
|
||||
## 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.
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
import requests
|
||||
import urllib.parse
|
||||
|
||||
baseUrl = "https://api.northpass.com/v2/people/"
|
||||
baseUrlname = "https://api.northpass.com/v2/people?filter[name][eq]="
|
||||
baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]="
|
||||
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2
|
||||
#apiKey = "6hUfJdAartHTHhHc0WIRZYPWe" #Walmart
|
||||
|
||||
def getfromName(baseUrlname, apiKey):
|
||||
name = "Norm Test Testing Norm"
|
||||
name = "Someone else"
|
||||
url = baseUrlname + f"{name}"
|
||||
headers = {
|
||||
"accept": "*/*",
|
||||
@ -15,15 +15,19 @@ def getfromName(baseUrlname, apiKey):
|
||||
"content-type": "application/json",
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
if response.status_code == 200:
|
||||
print("200 Response!")
|
||||
else:
|
||||
print("Another error! " + response.status_code)
|
||||
response = response.json()
|
||||
print(response)
|
||||
uuid = response["data"][0]["id"]
|
||||
print("Learner ID:" )
|
||||
print(uuid)
|
||||
#print(response)
|
||||
#uuid = response["data"][0]["id"]
|
||||
#print("Learner ID:" )
|
||||
#print(uuid)
|
||||
|
||||
def getfromEmail(baseUrlemail, apiKey):
|
||||
email = "norm%2Bg2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work.
|
||||
#email = "aaron.rodgers@corpay.com"
|
||||
#email = "norm2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work.
|
||||
email = " "
|
||||
url = baseUrlemail + f"{email}"
|
||||
print(url)
|
||||
headers = {
|
||||
@ -32,12 +36,30 @@ def getfromEmail(baseUrlemail, apiKey):
|
||||
"content-type": "application/json",
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
response = response.json()
|
||||
print(response)
|
||||
if response.status_code == 200:
|
||||
print("200 Error!")
|
||||
else:
|
||||
print("Another Error!")
|
||||
response = response.json()
|
||||
#print(response)
|
||||
uuid = response["data"]
|
||||
print("Learner ID:" )
|
||||
print(uuid)
|
||||
#print("Learner ID:" )
|
||||
#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__":
|
||||
getfromEmail(baseUrlemail, apiKey)
|
||||
getfromUuid(baseUrl, apiKey)
|
||||
#getfromEmail(baseUrlemail, apiKey)
|
||||
#getfromName(baseUrlname, apiKey)
|
||||
|
||||
@ -1,42 +1,81 @@
|
||||
import requests
|
||||
import os
|
||||
from datetime import date
|
||||
from collections import Counter
|
||||
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(
|
||||
basecsv,
|
||||
index_col=False,
|
||||
)
|
||||
try:
|
||||
readData.loc[
|
||||
readData['Course Name'].isin(['G2 Profile Anatomy'])]
|
||||
readData.loc[
|
||||
readData['Course Name'].isin('Profile Performance & Lead Management')]
|
||||
readData.loc[
|
||||
readData['Course Name'].isin('Review Tracking & Brand Building')]
|
||||
readData.loc[
|
||||
readData['Course Name'].isin('The Review Rundown')]
|
||||
extractedList = readData.loc[
|
||||
readData['Attempt Start'].isnull(),
|
||||
'Learner Name'].tolist()
|
||||
print(extractedList)
|
||||
# newList = [*set(extractedList)]
|
||||
#findUuids(newList, readData)
|
||||
except:
|
||||
print("Not Working")
|
||||
readData.loc[readData['Course Name'].isin([
|
||||
'G2 Profile Anatomy', 'Profile Performance & Lead Management',
|
||||
'Review Tracking & Brand Building', 'The Review Rundown'])]
|
||||
extractedList = readData.loc[readData['Attempt Start'].isnull(),'Email'].tolist()
|
||||
fourOccs = Counter(extractedList)
|
||||
finalNames = []
|
||||
for name, occurences in fourOccs.items():
|
||||
if occurences == 4:
|
||||
finalNames.append(name)
|
||||
findUuids(finalNames, readData, apiKey)
|
||||
|
||||
#def findUuids(newList, readData):
|
||||
# try:
|
||||
# for name in newList:
|
||||
# uuidList = readData.loc[
|
||||
# readData['Learner Name'] == name),
|
||||
# 'uuid'.tolist()]
|
||||
# print(uuidList)
|
||||
# except:
|
||||
# print("An error occured")
|
||||
def findUuids(finalNames, readData, apiKey):
|
||||
emailUuid = []
|
||||
uuidList = []
|
||||
deactivateUuid = {}
|
||||
try:
|
||||
for name in finalNames:
|
||||
baseUrlname = "https://api.northpass.com/v2/people?filter[email][eq]="
|
||||
name = name
|
||||
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__":
|
||||
mainFunc(basecsv)
|
||||
mainFunc(basecsv, apiKey)
|
||||
|
||||
1962
Scripts/G2_Unenroll/g2mca_112122.csv
Normal file
1962
Scripts/G2_Unenroll/g2mca_112122.csv
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
32
Todos.md
32
Todos.md
@ -4,36 +4,36 @@
|
||||
* [ ] (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] Password protection for a course when prompted.
|
||||
* [ ] (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] See if in NPP school we can remove/delete not activated people.
|
||||
* [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] 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] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling.
|
||||
* [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.
|
||||
* [ ] (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] Remove Footer Completely no Dash no LPs
|
||||
* [ ] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer
|
||||
* [ ] (Northpass) [11/09/2022] Start GrowthPass #6
|
||||
* [ ] (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.
|
||||
* [ ] (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.
|
||||
* [ ] (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] (Northpass) [11/09/2022] Complete SOC 2 Training in Northpass University for employees.
|
||||
* [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.
|
||||
* [X] (Northpass) [11/09/2022] Talk to prouct about updating the default admin invitation email content with support links, northpass academy, etc
|
||||
* [X] (SPSCommerce) [11/09/2022] Create some HTML design updates for under the normal cards on the training events page.
|
||||
* [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] 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] 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.
|
||||
* [ ] (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
|
||||
* [ ] (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] Contact us should go to a FORM not an email - remove link all together for now make it inactive
|
||||
* [X] (JJSV) [11/14/2022] Opt out for emails - Comms Changes
|
||||
* [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] 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] Screenshots of AppCues Examples
|
||||
* [ ] (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.
|
||||
|
||||
Reference in New Issue
Block a user