Changing Extensions in Finder – Disable Verification

When you change a file extension in Mac OS, you are asked to confirm that you actually want to do so. This can be annoying to those who routinely change say, .txt extensions to .csv. Thanks to KirkMC’s post in MacWorld, a simple Terminal command will disable that confirmation popup:

defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false

Then just relaunch Finder for the change to take effect:

killall Finder

Turning PowerSchool’s Parent/Student Portal On and Off

It’s the simps: In the District, under Setup select District. On the next page, under District Information, select Miscellaneous. At the very bottom of the page, find the checkbox for Disable Student and Parent Portals/Mobile Apps and check/uncheck as appropriate.
If turning the portal off, be sure to edit the message just below the checkbox.

Get notification when Autocrat fails to run

We have several leave request forms that get processed by the Autocrat Add-on. Inevitably, Autocrat seems to get stuck and fails to run. This is an issue for us when staff are submitting forms expecting that they will be acted upon while our crack team of support staffers remain unaware that the requests have been submitted.

Whenever Autocrat runs, it adds a note logging successful completion into the cell in the last row, last column of this spreadsheet. If this cell is blank, Autocrat has failed to execute. So, I came up with this little script. It checks the form responses spreadsheet’s last row and column every 6 hours (adjustable). If that cell is empty, indicating an Autocrat failure, an email is sent to me which looks like this:

To use this yourself, click here for the script. Copy the code and paste it into a new script in your form’s spreadsheet (Tools > Script Editor). Then set a trigger for the script to run at your preferred time interval.

PowerSchool – Teams for Teachers, Students, Courses and Sections

PowerSource article 6185 walks the user through setting up Teams in PowerSchool. Of particular interest is the comment from Laura Cowart about mass assigning students to teams (below). Team lists with ID numbers are found with the “Teams” link on the left of the PowerScheduler page.

Select all the students for Team "A" by hand from a larger group, say 8th grade, then navigate to the main PowerSchduler page. Select Functions and choose Update Selections. 

This is a mass change utility so you'll want to take some care here. Set your table to Students and verify that you have the correct number of students (the number you just selected by hand) in your current selection of records. If you're not sure, click on the blue link List Students to see the students included in your current selection. Click on Scheduling Functions from the breadcrumb trail, then Update Selections again from the Functions menu to return to where you can update the records.

When you're ready to make the change, click on the blue link Modify Records and choose Sched_NextYearTeam from the dropdown menu. Set the value to the ID number of the team you want to populate (find the number by clicking on Teams, under Parameters, on the left of the main PowerScheduler page) and then click Modify Selected Records on the lower right.

To retrieve a list of students from a certain team, use a search like this on the Students page: Sched_NextYearTeam=2781.

Pre-filled Google Forms for verifying student/demographic information

Our school’s PowerSchool data is jacked. Student names that should be separated with first, middle and last names are all inconsistent and we don’t have one field for preferred or “English” name. Parent email addresses and phone numbers change over time and our data has not been updated regularly.

To address this, we will send a pre-populated Google Form out to parents asking them to verify and update the data in our system. Once we’ve received the updates, we’ll upload changes into PowerSchool.

To create the prepopulated forms, we first export our current student and parent information into a spreadsheet. Then we create a Google Form with questions that match up with the various fields from the export. In the Form Responses spreadsheet, we paste the information from our data export and add a custom script (evenBeterBuildUrls()) taken from this stackoverflow question from user Mogstad. The script is also posted here.

This script creates a new column in the Form Responses spreadsheet with a link to a prepopulated version of the form containing our current demographic information (student & parent names, email addresses, street addresses, phone numbers, etc.). The link to the prepopulated form then gets emailed to parents using a mail merge on that spreadsheet.

Parent responses get appended to the spreadsheet and I use a Conditional formatting rule to highlight information that has changed. Changes are pulled into another sheet which we massage a bit before uploading again to PowerSchool.

Once completed, we’ll have correct, current information necessary for communicating with our community. This process will be repeated each fall to ensure that we’re working with accurate, current data.

Android File Manager: Marshmallow/P

To connect my Pixel XL running Android P on my iMac running High Sierra I go into Developer Options, click on Default USB configuration and select File Transfer.

On Marshmallow (7.11) I go into Settings > Developer Options > Select USB Configuration and select the MTP (Media Transfer Protocol) option.

Developer Options   Select MTP Mode

Macfusion

Macfusion allows you to mount a folder on an ftp server as a local drive. Files can be read, edited and written to the remote folder just as if they were on the local drive.
I set this up because I am taking a programming class from Udemy and use different computers in different locations when I’ve got time to spare and I want my files to be where I want them when I want them.
Macfusion has been problematic with Sierra, but luckily there are some fellers who worked things out. I used ElDeveloper’s Sierra Pre-Release 3 version and the most recent version of OSX Fuse.

Then there are just a few things to set up. On your Mac, you need to create a folder accessible to Macfusion. I created a Volumes folder under my user account: /Users/paulericksen/Volumes/

Then in the Macfusion app, I configure things as follows.

  1. Add an SSHFS connection using the [+v] dropdown menu.
  2. In the SSH tab, enter your host, ftp username, password and path to the folder you’d like to use.
  3. In the Macfusion tab, enter the folder name you’ll use during the session. In my case it was /Users/paulericksen/Volumes/fs  NOTE: Notice above, when I created the “Volumes” folder in my user folder, it did not include the “fs” folder I just entered. My understanding is that this is a temporary folder that Macfusion creates during the connected session. It is there when the ftp share is mounted, but it disappears once it is unmounted.   
  4. If all goes to plan, when you click the mount button, Macfusion will do its thing and you’ll end up with a folder that shows the contents of the ftp folder. Opening, editing and saving works as it would on your local machine.

 

GAM – Google Apps Manager

GAMADV-xtd3 is a command-line tool for managing Google domains and it works very well for many things. This is a list of some tasks I use from time-to-time.

  1. Put users into an OU. The target OU in this case is iPads – Pangyo, a subgroup of our Organizational Emails OU. I put a list of usernames into a text file (ipads.txt) saved in my GAM folder and ran the following in Terminal:
    gam update org "Organizational Emails/iPads - Pangyo" add file ipads.txt
  2. Suspend Google accounts of departed faculty: create a one-column file departed.csv with header Email containing departed faculty email addresses.
    gam csv gam update user ~Email suspended true
  3. Find all groups with suspended users: We notice that suspended users still show up in mail groups. In order to identify and remove them, the following will list all groups followed by the number (and emails) of suspended accounts still appearing in each group. In the latter list, if one sees something like:
    groupname@domain.com,2,sususer01@domain.com,sususer02@domain.com

    this means that sususer01 & 02 are suspended accounts that are still members of the group groupname.

    gam print groups members suspended
  4. Remove Suspended Users from all groups: Along with the previous tip, to remove a user from all groups, just use:
    gam user sususer01@domain.com delete groups
  5. Using GAM with Multiple Domains: I use GAMADV-XTD3 with two Google domains. Once one is set up, the other can be added by editing the gam.cfg file to have the following lines at the end:
    [faculty] 
    domain = facultydomain.edu 
    customer_id = facultyDomainCustomerID# 
    config_dir = faculty 
    
    [students] 
    domain = studentdomain.edu 
    customer_id = studentDomainCustomer# 
    config_dir = students

    Then create sub-folders faculty and students. In each folder, place the respective client_secrets.json and oauth2service.json files. Then use the following to switch from faculty domain to students domain:

    gam select students save
  6. Add Events to Users’ Calendars: To add an event to users’ calendars, use the command below.
    – The +09:00 shifts GMT to South Korea Time
    – The “accepted” tag forces the attendees to accept the event. This can be
    excluded if not needed
    gam calendar eventowner@domain.com create event start 2022-05-16T17:00:00+09:00 end 2022-05-16T17:00:05+09:00 selectattendees accepted users attendee01@domain.com, attendee02@domain.com summary "Event Title - Summary"
  7. Delete an email: If someone inadvertently sends an email to the wrong people or with unfortunate content, we can delete it with GAM. In the Google Admin panel, find the Message ID and drop it right after the “rfc822msgid:”

    Note that “doit” at the end instructs gam to actually delete the messages. Without “doit” gam will search for messages and identify those addresses which would be affected, but without actually deleting the message.

    gam all users delete messages query rfc822msgid:CAHn4qqS-7HmDMme+x5STHO1=x6r-8mTy698GwErBZnko6Z1cDQ@mail.gmail.com doit
  8. Delete spam email messages: If some ne’er-do-well with address spammer@hotmail .com sends a mass email, you can delete them with:
    gam all users delete messages query "from:spammer@hotmail.com" doit
    ...or by subject:
    gam all users delete messages query "subject:Click this harmless link" doit
  9. Bulk Create Google Classrooms: Create ClassroomCreation.csv with columns alias, course, section, teacher and run the following.
    gam csv ClassroomCreation.csv gam create course alias "~alias" name "~course" section "~section" teacher "~teacher" status ACTIVE
  10. Bulk Add Co-Teachers to Classrooms: Create BulkAddTeachers.csv with columns email, alias and run the following.
    gam csv BulkAddTeachers.csv gam user "~email" create classroominvitation course "~alias" role teacher
  11. Find the owner of a Google Doc: It’s the simps if you know the file ID:
    gam show ownership 1SYWGvYIRAt6Q6vfC3BgtlRBNLOU0tSYgLycw4bKOkY
  12. Bulk Add Calendars to Users: Create BulkAddCalendars.csv with columns email, calAddress and run the following (calAddress is the calendar’s address, a bunch of random-looking characters followed by @group.calendar.google.com). Note the options:
    Selected true: “Selects” the calendar to be visible by default. backgroundcolor and foreground um, well, set the background and foreground colors for the calendar.
    gam csv BulkAddCalendars.csv gam user "~email" add calendar "~calAddress" selected true backgroundcolor '#009900' foregroundcolor '#FFFFFF'
  13. Print Users to Drive: You can run this with “…fields allfields todrive” to get all available fields. But when we’re running an audit, it’s much neater for us to get just the fields we need.
    gam print users fields primaryEmail orgUnitPath suspended creationTime lastLoginTime familyName fullName givenName includeInGlobalAddressList isEnforcedIn2Sv isEnrolledIn2Sv todrive
  14. Mass Update Gmail Passwords: We reset all grade 3 student passwords at the beginning of the year and then have each student create their own password. To set this up, we put all of their email addresses in a one-column “grade3.csv” file where the one column header is “email”. Then, the GAM command is:
    gam csv grade3.csv gam update user "~email" password 'newpass' changepassword on
  15. Search Emails for Existing WiFi Login Credentials: We sometimes want to identify who still has their WiFi credentials email from Meraki.  The GAM command is:
    gam all users print messages query "from:'noreply@meraki.com' subject:'You have been authorized for'" todrive