Author: shandor

  • 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…

  • Using the Zoom API to deal with webinar panelists

    In response to the pandemic my school is using Zoom Webinars for various performances. Our student Improv group has done a number of performances. The cast all need to be “panelists” in Zoom parlance, and when you duplicate a Webinar it does not duplicate the panelists. That’s a pain since there are a lot of…

  • Cropping PDFs with AppleScript

    Due to Coronavirus the printing of our yearbooks was delayed, so we decided to distribute it digitally until the print version was available. There are lots of tools, like ISSUU, Uberflip, or even Google Drive that can do a decent job of displaying a PDF, password protecting it, and preventing it from being downloaded. The…

  • Virtual Graduations & End of Year Events in the time or Coronavirus: Stream Deck

    In a previous post, I mentioned that I used Wirecast to do live video production of events I broadcast using Zoom. Normally, I’d like to have someone helping me, but that’s much harder when everyone is remote. Fortunately, I found the Elgato StreamDeck to help. It’s a USB hardware device with a bunch of buttons.…