Showing posts with label autocrat. Show all posts
Showing posts with label autocrat. 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

Friday, November 29, 2013

More thoughts on automation

As I sat in the allergy office and watched the nurse enter data into my record, I immediately realized another use for autocrat in my daily work. Any time a task is repeated in the same way, I should be able to get a machine to do it. The trick is getting the information into a format the machine can use and then into a format the humans can make sense of. I might have solved half of those problems while waiting for the doctor to come.

In my job we give formal academic testing to each student every third year. There are a number of different sub-tests and even different main tests that the district likes to use. All of the tests and scoring programs I've used will spit out an electronic report in either (or both) a Word document or a rich text file (that's the .rtf extension).  I need to learn how to get a machine to parse through the text file, convert the standard scores from tab delimited text into spreadsheet data, and then run an autocrat-style mail-merge into the generic report template.  The spreadsheet could also talk to a student data information system (info dumped from SEIS?) and use the student's unique ID number to look up gender and then put in the correct gender pronoun in the tedious parts of the report--replacing the "his" for "her" is always difficult or at least time consuming.

I would leave the summary and recommendations up to the report writer, so the final document that the computer spits out cannot yet be a pdf.  Autocrat can handle that, however.

I think this would be a highly useful tool for case managers who are interested.  One benefit is that not everyone has to use this system if they don't want to.  Also, it should be quick and easy (relatively) to set up and get working now that I know a little of what I'm doing with the scripts.  The first step might be the hardest for me--making the computer parse a text document and convert.

This little project will be on the back burner until around March 2014, I think, due to some meetings coming up . . .

Friday, November 22, 2013

Streamline the Paperwork to Save the Sanity of the Case Manager

My department chair asked a while ago for info on data collection using google forms.  I presume she has gotten pretty far in the process and that the data has started pouring in since the question today was how to display the results.  I have put up some screen shots below of how and where to click to get the automatic version of data summary that google provides for free.  Anything much beyond that will require a little more spreadsheet wizardry.  I'm getting out my robe and wizard hat now.

First, I'll show you how to create a form and then it will make more sense how to get information out of the response spreadsheet.

First, in your Drive account, click on "Create" and then "Form":
Simple enough.  Google will ask you to title the form and then you can create some questions.  There are some awesome tutorial videos on how best to use each type of google form question. +Melissa Hero has some good ideas if none spring to mind. (But then, if you had no ideas for how to apply these tools, you wouldn't be looking around for tutorials.)

Next, put in your questions.  You can also add in data validation, and many other neat tricks, no computer programming class required.

You can make questions that work from check boxes or drop down menus or radio buttons or large text boxes and many other types (e.g. date and/or time; although, the date and time questions display all funky when you pull them out of spreadsheets since it's stored as a time code of some sort so computers will read all the way down to the millisecond).



Google will automatically create a spreadsheet to collect all the responses.  Each column header is named for a question you created.  The far left column will always be a timestamp when the "submit" button was clicked.  This is useful as a paper trail.  I also learned a little trick to add a unique ID down one column.
The formula is this:
=arrayformula(Row(B:B))

I use the B column since Google steals the A column for the timestamp and the left hand column is the normal spot for a Key ID in (for example) a database.  With the arrayformula down the whole column, I can later look up any row of response data I want.  It's very neat.

Back to the summary of data!
You can get to the summary from the responses spreadsheet by clicking on Form menu and then Show Summary of Responses.




Alternatively, you can get to the summaries from the form itself (in edit mode, not the live form that users see) by clicking on Responses, then Summary of responses.








I put in some fake sample data:

Here is what the responses look like for my fake data:
That was cool.  I hope that helped and was actually what I was asked for.

Now for some real wizardry.  We have the technology, we can rebuild him, stronger, faster than before!
Using two google forms (one for Special Ed case managers and one for Gen Ed teachers to post feedback), we can replace the current paper system of giving and receiving IEP feedback.  That's not accurate, all mine are electronic right now.  I'm just using MS Office docs with forms to fill out which is only cumbersome when new versions of the software comes out and half the staff can not upgrade (public school budgets, etc.).

With a different revision of the current feedback system, I would insert a link into my MS Outlook calendar invites that go out to Gen Ed teachers. Here is the link to the sample email headed to Gen Ed teachers to invite them to the meeting.  Please make comments on it. Remember, this email is automatically generated and filled with the correct meeting info etc., so I don't have to write 26 individual invites for my individual students times 6 teachers each.  Microsoft allows you to do the same thing.  There are a number of advantages to google so the department could debate which they'd like to use.  I'm honestly ok with either as long as the whole department is doing the same thing.  I love uniformity, I think it makes us look professional to parents and teachers and I think the Gen Ed staff appreciates when we have our systems in place smoothly.  (Our current system is really good at VHS, I want to shed as much paper as possible and the little timestamp feature when Gen Ed teachers click submit is a nice perk!)

After teachers get that email, they click the link to the feedback form that would create the final pdf attached to the IEP in the computer.  Here's a sample feedback form.

There are many other uses for this type of functionality in a school system.

Thursday, October 24, 2013

Creating an Automatic Emailer from a Form Submission

I'm very happy that I could impress myself and solve a little problem at the same time: Raising two kids requires large amounts of communication and more time than is in the day.  I put together a little Google Apps Script (taken mostly from tutorials and Codecademy.com) that will save me time and allow some speedy communication of important kid-facts.
The problem was simple and solvable in several low-tech ways--some less clunky than others--however, this high-tech method is transferrable to education (hence my post on this blog).

I believe I could have used something like the autocrat script to get the same result.  But the way I did it allowed me to learn some javascript code.

Here's the original problem: I have two kids, so I look after one in the morning and my wife looks after the other.  She needs to know what I took care of in the morning and at night with that kid so nothing important gets missed each day.  This is pretty complex depending on how sick or fussy or tired each child (and each parent!) is that day.  Asking single questions for each topic took up too much time.

I solved this using a google form, reachable from my phone, and a script that emails both my wife and I when I submit the form.  The email displays a simple table with information on what I did with our child that day.

Below I've attached the code. If anyone knows how to pull the headers off of a Google Sheet and turn them into an array in javascript, that would be useful (in the "Properties" variable in line 5).

This can be used in education very simply if you have a tracking form that students fill out, it can email the whole team and/or mom and dad to inform how often a student is submitting the form.  For example, if they are coming in for after school tutoring and you need to track and document that.  I can see some ways to use this type of thing for back to school night with parent meeting requests as well.  Another functionality that Google allows is to trigger the script (i.e. send the email) on a time trigger (e.g. once a day) or on edit if the spreadsheet is edited.  This could be useful for collaborative writing projects in an English class or as a summary email for a project where you are tracking some kind of form-submitted data.  Basically, anything you used paper for 15 years ago you could collect frequency data on and get an email.  I could think of how to use this type of script in a small business as well.

Autocrat is, of course, a much more robust script that could be used more flexibly.  With this project, I was able to customize it for my uses and pick fancy colors for my email, etc.  Someone with more time than me (i.e. the website club at school) could expand this short code easily and add in some graphics to support the school. That would make a pretty neat looking response email.


Here's the code:
//Thanks to this code: https://gist.github.com/anonymous/4960553
function OnSubmit(e) {
 
  var ownEmail = "your@email.com"
  var NewSubmission = {}
  var Properties = ["DateTime","Time of Day","Data1","Data2","Data3","Data4","etc."];

  for(var i in Properties){
    NewSubmission[Properties[i]] = e.values[i];
  }

  var table = "<table style=\"border:2px solid black;width:500\"><thead><tr><th colspan=\"2\">What did I do today?</th></tr></thead><tbody>";
  var j = 0;
  for(var Properties in NewSubmission){
    j=j+1;
    if (j % 2 == 0) {
      table += "<tr  style='background-color:orange'><td>" + Properties + "</td><td>" + NewSubmission[Properties] + "</td><tr>";
    } else {
      table += "<tr style='background-color:black'><td style='color:white'>" + Properties + "</td><td style='color:white'>" + NewSubmission[Properties] + "</td><tr>";
    }
  }
  table += "</tbody></table>"
  var emailText = "Oh hey there!" + "<br/>" + "Here's what we did this " + NewSubmission["Time of Day"] + ":" + "<br/>" + table + "<br/>" + "<br/>Love from FormBot"
  var advancedArgs = {htmlBody:emailText};
  MailApp.sendEmail(ownEmail, "Daily Digest",
                  "",advancedArgs);
  MailApp.sendEmail("another@email.com", "Daily Digest",
                  "",advancedArgs);
}