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.
|
* 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.
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
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] 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.
|
||||||
|
|||||||
Reference in New Issue
Block a user