Showing posts with label automation. Show all posts
Showing posts with label automation. Show all posts

Sunday, April 19, 2015

How to: Email your Teachers from a Form Submit

I lost about an hours worth of typing and pictures in this post, so I'm going to type up another quick version that won't be as cool.  Trust me, it was awesome.

+Ken Daniels asked me about making autoCrat (Thanks for this awesome tool, +Andrew Stillman and the New Visions School team), the awesome sheets add-on, email his teachers at his school.  I don't know his particular situation--when I set my version of this up, it was to invite teachers to a meeting based on a student's schedule.  So there was a lot of tables and looking up going on.

The easiest way is to have the user enter the email addresses into the form you are using to collect data, but I hate having users make mistakes and also having them manually look up and retype stuff that the computer should do for us.

Here's my solution:

AutoCrat will run off of a form submit now, so that's cool and that's how I'll use it here.  I like to make the form as simple as possible.  I've made a sample one that collects the teacher's name.  

You'll need a spreadsheet list of teacher email addresses to look up from and the names you get from the form submit should be exactly the same (that's another problem altogether).  Again, when I used this type of thing, there was a step in between where my form collected student data and then looked up teacher names and teacher emails based on that (student names are much less prone to errors in my experience since teachers are used to entering them exactly--or you could easily use the student id number which reduces potential for error a bunch).  Here's a sample.

In my email sheet, I've exported the complete addressbook from Outlook for my school site.  To help the look up, I've made the leftmost column into a list of the teacher names in the same format as the teacher names appear in our student database.  There's a couple ways to do that, I currently prefer the =JOIN() command until I learn a better method.


Then I made a named range from the columns.  Technically for this lookup, you only need two columns--however, you could also do this lookup from a much bigger table if you needed. The named range makes it easier to write the formula for looking up emails, and allows you to add or subtract staff members each year as people retire/get hired without having to go back and manually change every single formula.
When you connect a form to the sheet, it will create a new sheet.  As each response is listed, it will erase all data in the newest row.  This means that any neat formulas you have in the response collection tab will be deleted every single time someone submits a response.  The way to deal with this that I've found has been to make another sheet and use the =IMPORTRANGE() command.  Images below.  




Once the range is imported, it will auto-update with new submissions and it will allow you to make formulas in the columns to the right of your imported data.  Now we can lookup effectively.  

After importing the range, I make a column that includes teacher name data exactly as it appears in the email lookup sheet. See the =JOIN command below.  In the next colunn, I've used a =VLOOKUP command to lookup the perfectly formatted teacher name in our named range at column 6 (where the emails are sitting).

You can look up any of these commands with the google help file and it explains pretty clearly all the options and parameters for each.

I like to wrap my formulas with =IF(ISTEXT(), my current formula, "") so that I can copy down the formula to all cells in the column and it won't display errors and #N/A and be ugly.

Getting autoCrat to email is now simple, you can have it send an email to multiple recipients or whatever you want using the dollar tags (for example: $emailAddress ) as one of the options in that add on.  each time a response is submitted, autoCrat will run and fill in the email with whatever you tell it and send to all the dynamically changing emails that pertain to your current submission.  I find this to be a little bit of extra work, but it avoids the problem of hard-coding a bunch of emails that will eventually change.
I hope this is helpful to Ken and anyone else who might need it.  I know it's a down and dirty version, and it will help if you've got a mid-level familiarity with excel/spreadsheet functions. i.e., this "guide" is not very newbie friendly, but here it is.

I know if Ken needs anymore support on it, we'll end up with a GHO and I'll attempt to record that and link it here as well if we get there.

Wednesday, October 22, 2014

Case Management Documentation and GAS Part 4

I'm writing this down so I can remember why I did things the way I did when I have to go back and either fix it or make a new one somewhere else:

"The less change the better" is a simple motto for some folks. I wanted to keep the new method (my form) of getting Gen Ed feedback as similar as possible to the old method, so I kept the same wording and the same order of questions.  I simply lifted them on to a google form which will plop the answers down in a sheet that autocrat turns into a nice PDF that looks identical to the version we use now.  The output keeping the same look is only important to me so that the admin and district people who are used to seeing our forms can feel comfortable.  More important is that the "front end"--where the Gen Ed teachers look at it--looks as similar as possible.

Here's where my problem arises: I have to add some pre-filled, superfluous "questions" to the form so that autocrat will spit out the the PDFs exactly how I want them while keeping the formatting customized to each student.  Information such as student initials and case manager emails are easy for a spreadsheet to look up and calculate, however, this behind the scenes look up has to happen before the form submits to autocrat (without reworking my entire concept and workflow here).  So I will make it part of my case-manager-side script, but that means that I have about 4 extra questions hanging off the end of my Gen Ed form.

Perhaps I can find a way to make them invisible in the future, or end up reworking the entire work flow.  For now, better to make a working product before getting ahead of myself.

That's all for now.
Links:
Link to part 1
Link to previous part
Link to next part

Monday, October 13, 2014

Case Management Documentation and GAS Part 3.5

Part of being a Special Education Teacher is giving  parents progress updates on goals at least as often as their non-disabled peers.  At high school, that means once per quarter.  So doing goal updates this week and next has put my side project on break for a minute.  In spite of that, I was able to solve one small problem with my script.  I was able to get the script to take the IEP date information (from whatever the case manager puts in) and have it spit out a pretty and formatted text string (instead of a weird date code that computers read!). This solves a little problem I was having at the tail end where the printout would show a long date string including time--which I didn't want on that piece of text.

As an aside, goal updates are another beast that might benefit from some automation during certain parts of that process.  That's a long term thought I'm letting simmer and cook on the back burner.

Monday, October 6, 2014

Case Management Documentation and GAS Part 3

Well, moving forward on this project.  I now have the script getting all the values from the case manager submitted form and then looking up successfully the course schedule for the student from a second spreadsheet of schedule data that I pulled from the Aeries student database.  At some point that could be a live lookup, but for now it's dependent on a human to keep it accurate and up-to-date.

Next, it pre-fills the course info and IEP meeting information on a form for the General Education teacher to fill out and emails the teacher with a link.  When they click the link, it brings them to the feedback form already in progress with almost half the information already filled in.  No longer do they have to fill in their own class and double check the IEP date and time. (of course, at this point the IEP could get rescheduled, but that should be a separate thing on their calendar for another project at a later time!)

One item on my list is to make this Gen Ed version of the google form look slick and professional by using the school colors and logos now that Google allows us to customize their forms in that way. I'll get this pretty good looking before I show it to my Admin., but all that is cosmetic and the guts of the program currently work how their supposed to.

The next step is an Autocrat PDF creation off of my template feedback form that I created about a year ago for VHS.  I have 3 or 4 tweaks left on it at this point, until the Admin. sees it and offers changes.

At this point I want to record for posterity the methods I used to dump my spreadsheet data.  I had to go into MS Outlook and find my campus's "All Staff" email list.  Then I added all the names on that list to my contacts in Outlook.  This was in the Outlook program, not webmail like a lot of people like to use for outlook.  When all the names are in your contacts, you can export your contacts as a .csv file that will convert nicely into google sheets or excel, etc.  It has loads of empty columns that I don't use, but it has about 3 that I needed to get.  These were the account names of all the teachers and staff on campus.

All our district has the domain @vacavilleusd.org but their account names are different.  Usually it's the first name and the last initial (which I could make up with a spreadsheet function if it worked all the time).  However, sometimes there is already an "AndrewH" account and they do "AHyland" as the account.  So now I have that list from which to pull email addresses whenever I need.  I made a named range to look up in and concatenated the account name with the vacavilleusd.org domain.

I did some similar data pulls for schedule from Aeries (teacher, course, period) and special ed info (like testing accommodations and behavior plan status, dates for next IEP, etc.) from SEIS--our Special Ed Information System.  I can detail how I pulled those later so that I can replicate them next time and for any other campus and/or district that might use this idea.
Links:
Link to Part 1
Link to Previous Part
Link to Next Part

Thursday, October 2, 2014

Case Management Documentation and Google Apps Scripts Part 2

I believe I have the script completed for the first half of my project. At least, I can make the computer fetch and use all the data in question. One bump at this stage is turning out to be triggering the script in such a way that it will run completely and automatically when a form is submitted. That might be a huge task if I end up having to make half of the data lookups happen inside the script instead of inside the  spreadsheet.

In any case, the next step will be the easy part--automating the general education feedback PDF production using the autocrat add-on. 

I think a more expert programmer would spot some areas where I have clunky code in my script, but I'm making progress each day. This will be my first real work project in programming and when it works I will have something to brag about. 

Link back to Part 1 and Link to Next Part

Friday, September 26, 2014

Case Management Documentation and Google Apps Scripts (Add-ons)

Well I've begun the project for this year and I expect to be done around January 2015, although tht may be wishful thinking. If I keep the current pace for progressing through each problem, I'll be done by thanksgiving, so January seems more realistic.

I have previously built each of the pieces I'm going to need for this project, now I have to connect them all and make them talk with each other. I've been able to find some great examples of code, but for all of them I've needed to tweak to make it fit my data. 

My concept is for a special education case manager to input only four pieces of info for an IEP and have my program do the rest of the job looking up things and inviting teachers. This means making at least two databases talk to each other and probably three. For right now I'm pulling the data once a semester and using that to work with. So if something changes for a student then I have to update manually on my sheet. 

The old method is for case managers to look up a students schedule and then manually input each of six teachers names and classes twice--once for the meeting invite and once for the feedback form.  This method was varying degrees of technology away from a typing pool secretary with 5-sheet NCR paper and a highlighter. Currently we've moved up to around 1998 using a word document with fillable boxes. 

So far I've figured out how to make the computer read the form input from the case manager and pull up the next form and pre-fill the answers. Next is to make it email the URL of the prefilled form to the six correct teachers. 

This will certainly be part one of my posts on this topic.  Next Post Here
Link to part 3 -- and Link to part 3.5