Author: shandor

  • Identifying and configuring network ports using Python, LLDP/CDP and the Meraki API

    Recently, I faced a challenge when replacing half of the network switches at my school. I inherited a network where the port configuration wasn’t well documented.  One way I have historically dealt with this is by plugging a networking test tool into a port and using LLDP to discover which switch port the network jack…

  • Woodworking: Cutting Boards & Making Mistakes

    I’ve taken up woodworking as a hobby, and while I hope to focus on making furniture, currently my skills are much more limited. Right now I’m focusing on making cutting boards since I can build various skills, avoid spending a ton on wood, and give them away as gifts. Mistakes, I’ve made a few My…

  • Deleting accidental or dangerous emails in Google Workspace

    As Google Workspace admins, sometimes, we are asked to delete emails from other users accounts when the messages are sent in error or contain malware/phishing/etc. This is not something we do lightly and should only be done in the most extreme cases. If the message went outside your Google Workspace domain, there is almost nothing…

  • My process to programming with Blackbaud Sky API (and really any API)

    In preparing for the panel session “APIs and the Art of the Possible” for the 2024 ATLIS Conference, I spent some time thinking about my process for developing solutions using APIs. I have recently been working on something to send gift acknowledgment letters via Google based on data in Blackbaud Raiser’s Edge and thought it…

  • Using Google Apps Scripts to distribute files to users

    While it is easiest to use Google Classroom or your LMS to distribute files to users, sometimes I need to handle it myself via Apps Script as part of a larger solution. The challenge: I have a folder full of PDFs that I generated for each student. I’d need to place these unique files in…

  • Moving Google Drive Docs/Sheets/Forms between workspaces/organizations

    Recently, I needed to move a complicated Google Form and an associated Google Sheet that stored the responses to another account. Within an organization, this is pretty easy to do, but moving between workspaces doesn’t appear possible. There is a workaround by using a Google Shared Drive in the target account and adding the source…

  • Onboarding new users with GAM with an assist from CloudHQ

    When someone is hired at my school, our HR system sends tech support an automated message with some basic information (first name, last name, start date, personal email address, job title, supervisor, etc.). Unfortunately, this isn’t formatted the best and I used to copy/paste the information from this email into an onboarding Google Sheet I…

  • GAM, Google Sheets & Calendars

    While web interfaces make things easier, it is often much faster to do things on the command line, especially if you are trying to make changes in bulk.  My school recently added Google Calendars for all our sports teams. One trick to make this easier is to use Google Sheets (or Excel) to convert spreadsheet…

  • Meraki API

    So Cisco/Meraki has some pretty good documentation at using the Meraki API with Python. Short version is use pip to install Meraki (pip install meraki) and then in your shell set an environmental variable called MERAKI_DASHBOARD_API_KEY to your Meraki API key (export MERAKI_DASHBOARD_API_KEY=xxxxxxx) which can be enabled and found (see https://documentation.meraki.com/zGeneral_Administration/Other_Topics/The_Cisco_Meraki_Dashboard_API). Below is a little…

  • Using ThankView API to download videos

    At the end of last year, my school used ThankView to record surprise videos for each graduating senior. We had 2-4 teachers record a short video reflecting on their relationship with the student and wishing them well. As I prepare to leave that job, I wanted to make sure the school had an archive of…