Tag Archives: Powerschool

Getting Grade Data from PowerSchool Pro (#TeachersCoding)

Given that I use standards based grading with most of my classes, the grades I assign to students change quickly. I'm modifying those scores multiple times a day in some cases in my school's instance of PowerSchool Pro.

What the system currently lacks is an easy way to get that data out. For whatever reason, the only export format is PDF. This makes it difficult to get things into a spreadsheet.

After some hacking around in the console, I was able to put together a script that scrapes a class scoresheet page for the student names and assignment names and stores the result in a variable called exportData. This code is included below, and is also here in a gist. Paste the entire code into the console and run it. Then type in exportData and the scraped data will appear.

screen-shot-2016-11-09-at-8-26-58-am

You can then copy and paste the resulting string (leaving out the quotes) into Excel, OpenOffice, or Google Sheets and the data will appear there, ready to be spreadsheet-ified.

The only place where this doesn't work perfectly is when there are more students than will fit on the page. As far as I could tell after poking around, the grade data is re-rendered to fit the page as scrolling occurs. I didn't work that hard to see if the data is stored somewhere else on the page, so someone with a bit more insight might be able to improve upon my work.

Here is the full code:

var nameElements = $('.student-name').toArray();
var assignmentElements = $('var').toArray();
var names = [];
var assignments = [];
var assignmentNumber;

assignmentElements.forEach(function(name,index){

assignments.push(name.innerHTML)

})

names = names.slice(0,0.5*(names.length))

var rows = $( "tr[id*='std']" ).toArray()
rows.forEach(function(row){
var currentName = $(row).find('.student-name')[0].innerHTML;
var gradeElements = $(row).find('var');
gradeElements = gradeElements.slice(1,gradeElements.length).toArray();
grades = [];

gradeElements.forEach(function(grade){
var currGrade = (parseFloat(grade.innerHTML)!=NaN)?parseFloat(grade.innerHTML):'';

grades.push(currGrade)
})
if(grades.length>0){
names.push([currentName,grades])

}

})

assignmentNumber = names[0][1].length;

assignmentString = 'Name \t';

for(var i = 0;i<2*assignmentNumber-1;i+=2){ assignmentString += assignments[i] + '\t ' } var gradeString = ''; names.forEach(function(name){ var currentString = ''; currentString += name[0]+ "\t " name[1].forEach(function(grade){ currentString += grade + "\t " }) gradeString += currentString + "\n " }) var exportData = assignmentString+"\n"+gradeString;

A tale of two gradebooks - my SBG journey continues

I realized this morning that I could look back at the assignments from my PowerSchool gradebook from a year ago and see the distribution of assignments I had by the end of the semester:
Screen Shot 2012-12-12 at 8.32.14 AM

My grades were category based - 5% class-work, 10% homework completion, 10% portfolio, 60% unit tests, and 15% quizzes. This comprised 80% of the semester grade, and was the grade that students saw for the majority of the semester. A semester exam at the end made up the remaining 20%.

While I did enter some information about the homework assignments, my grade was just a reflection of how they completed it relative to the effort I expected them to make while working on it. No penalty for being wrong on problems, but a cumulative penalty developed over time for students tending not to turn it in. This, however, was essentially a behavior grade, and not an indication of what they were actually learning. The homework was the most frequent way for students to get feedback, and it did help students improve in what they were learning, but the completion grade was definitely not a measure of what they were learning at all. There were six quizzes that fit into my reassessment system. Not important enough to matter, I realize now with 20/20 hindsight.

The entire Standards-based-grading community shoots me a look saying 'we told you so', but only momentarily and without even a hint of snark. They know I am on their side now.

Here is a screen shot of the assignments in my grade-book as of this morning:
Screen Shot 2012-12-12 at 8.35.40 AM

There is a clear indication of what my students have been working on here. With the exception of the portfolio, a student can look at this (and the descriptions I've included for each standard) and have a pretty good idea of what they did and didn't understand over the course of the semester. They know what they should be working on before the semester exam next week. The parents can get a pretty good idea of what they are looking at as well. I knew making the change to standards based grading (SBG) made sense, but there have been so many additional reasons I am happy to have made the change that I really don't want to go back to the old system.

I'll do more of a post-game analysis of my SBG implementation in PowerSchool soon. I will be making changes and enhancing parts that I like about what I have done so far. I have to first make it through the busy time ahead of marking exams, submitting comments, and getting my life ready for the extended winter break that is peeking its beautiful head over the piles of reassessments on my desk. It is really satisfying to see that my students have weathered the transition to SBG beautifully. Their grades really do emphasize the positive aspects of learning that a pure assignments & points system blurs without thinking twice.