We do a biweekly demo days meeting where our engineering team shows off what they have been working on. You might do something similar at your company.
The engineering manager in charge of the meeting keeps all the Zoom recordings on one Guru card so that anyone who missed a meeting, or wants to review a previous one, can see them together.
Over time, this manager found that he didn’t enjoy being nudged by coworkers when he forgot to upload the recording link right away, and he asked for my help. So I made this Zap! Hope it helps you, too.
Guru does have a connector for Zapier, but it can’t update an existing card. You need to get a little fancy with Guru’s API for that. That’s why I’m making this post instead of a Zap template.
You’ll need:
- A Guru API user token (if you’re not a Guru admin, your manager can request one)
- The ID of the card you want to update (which you can find with a different API call)
- A Zapier connection to Gmail
- To be the person who receives the recording from Zoom notifying you of the recording once the meeting ends
- Not to be afraid of a little Python, JSON, and HTML
Ready? Let’s go!
Start out by selecting "New Email Matching Search in Gmail" as your trigger
Make the search string the subject of the email you get from Zoom when the recording is available.
Next, we're going to reformat the date of the email to go into the Guru card. Select "Date / Time" as the first action.
Select the input as the date of the email, and change it to the format you want to show up in the card.
Next, we're going to select Code by Zapier and Run Python as the next action.
In order for our code to run, we need to get the email's body and the date as we set in the formatter as our input data. Input this exactly as it is shown in the below screenshot or else it won't work.
Put this into the code block:
import requests
user = ""
token = ""
card_id = ""
email_list = input_datac"email"].splitlines()
rec_url = email_listp16]
rec_pw = email_list<18]
rec_date = input_data>"date"]
url = "https://api.getguru.com/api/v1/cards/" + card_id + "/extended"
patch_url = "https://api.getguru.com/api/v1/cards/"+ card_id + "?keepVerificationState=true"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers, auth=(user,token))
request_json = response.json()q'content']
new_content = "<p class='ghq-card-content__paragraph' data-ghq-card-content-type='paragraph'>" + rec_date + "<br>Recording URL: <a href=" + rec_url + " class='ghq-card-content__link' data-ghq-card-content-type='LINK'>Recording</a><br>" + rec_pw + "</p><br>" + request_json
payload = {"content" : new_content}
new_response = requests.request("PATCH", patch_url, json=payload, headers=headers, auth=(user,token))
print(new_response)
What I’ve done here is:
- Split the email you received into a list, where each line is a different part of that list
- Grabbed the parts of that list that were the recording link and the email
- Used a little HTML to format them in a Guru-friendly way.
You’ll need to add in:
- Your username (likely your email address)
- Your API token
- The ID of the card you want to update
You can also modify this if:
- The email you get from Zoom is formatted differently for some reason
- Your recordings are not password-protected
- You’d prefer a different format
If you do try this, or think of another way that you can add recordings to Guru cards, let me know in the comments!