cancel
Showing results for 
Search instead for 
Did you mean: 
sara_chai
Community Member

Accessing all student grades...

Jump to solution

Is there an easy way (like there is for the student when they log in on the right hand side) for an admin to access grades in all subjects (6 classes)?  Our counselor wants percentages and an easy way to print them.  I realize that you can go into each class, but they want an easier - all classes approach.

47 Replies

 @mcrosby2  

First, I wouldn't recommend Greasemonkey anymore -- switch to Tampermonkey. Firefox made changes in late 2017 that made Greasemonkey rewrite the way they do things. They chose to not maintain backwards compatibility so the scripts need updated to work. Tampermonkey implemented things a different way that maintained compatibility with older scripts.

Once set up, it's not much more work and people don't even know it's not there. I upgraded the scripts I wrote a couple of months ago to be more robust. The updated versions are available on my GitHub site, this is one of the few Canvancements that don't have their own write-up as a separate page, so it's harder to find the information on them.

Chris_Munzo
Adventurer

All -- It looks like you've got some ways within native Canvas to get this information.  We've also created a screen within our Dropout Detective solution to do this.  It's "jumping off" point is a dashboard of at-risk students, so that's a bit different than the native Canvas. 

Overview K-12.PNG

codom
Surveyor

As I stated earlier--I've been messing around with some custom Javascript to create the link for grades and stuff. I just finished working on a way to display the student's name on the grades page. That was our number one complaint from our administration after we implemented the Grades button that I described earlier. I'm attaching screenshots to show what each code does: (which I didn't do last time)

Grades Button:

103004_pastedImage_0.png

$(document).ready(function(){

if(window.location.pathname.indexOf('/users/') >=0){

/*Get current URL from Canvas, and split into an indexed string */

var originalURL = window.location.pathname.split('/')

/*Flip the String in originalURL because Canvas has at least two paths for the user page
*(/accounts/subaccountnumber/users/ and /users/)
* and we are interested in just pulling the userID
*/

var flipURL = originalURL.reverse();

/*Access the User ID*/

var userID = flipURL[0];

/*Build New URL */

var newURL = "https://yourinstitution.instructure.com/users/" +userID+ "/grades";

/*Add Text Link to right side of User Page to see grades */

var c = $('#right-side');

var text = '<a href = "'+newURL+'" >Grades</a>';

$(text).appendTo(c);

}

});

I've now added the student's name to the top of the grades page:

103005_pastedImage_1.png

$(document).ready(function(){

if(window.location.pathname.indexOf('/grades') >= 0){

var originalURL = window.location.pathname.split('/');

var userID = originalURL[2];

console.log(userID);

var studentinfo = "/api/v1/users/" +userID;

console.log(studentinfo);

$.getJSON(studentinfo, function(json){

console.log(json.name);

studname = '<center> <h3> Grades for ' + json.name + '</h3> </center>';

$('#content').prepend(studname);

});

Just thought I'd share--since I wouldn't have gotten this far without this thread. Thanks again, everyone!

 @codom ​

Thanks again for the work you do.

There is a problem with this latest piece, though. It will run on the page the student gets when they click on the Grades link at the top of the page (or wherever it is in the new UI).

That page has a location of <canvas>.instructure.com/grades

It does not have the canvas_user_id in it, which means that you'll be making an API call that will fail for every student who looks at their grades.

I just posted a cleaned-up version of your original JavaScript up higher in this thread. It uses Regular Expressions to make sure that the path matches the right thing.

It would be

var regex=new RegExp('/users/([0-9]+)/grades$');

var matches = regex.exec(document.location);

if (matches) {

     // do your stuff

}

Although not necessary, I notice you did it everywhere else and it's good programming practice, you may want to put a var in front of studname.


You don't have to compute studname first, you can just put it inside the prepend statement.

I was kind of surprised when i saw that report. The breadcrumbs had my name in it and the actual student's name wasn't anywhere to be seen. I thought about doing an API call like you did, but then I thought about FERPA. I have my own grade system for some classes that aren't in Canvas and I don't print the name on the screen, either. I don't want someone to print it and accidentally leave the paper lying around (or still in the printer) and have other people know what grades there are.

I would recommend the same thing here that I did with the other script, though. Consider putting it inside a GreaseMonkey or TamperMonkey script and then only loading that script on the computers of the people who will be using it. GreaseMonkey and TamperMonkey scripts only run on the pages specified, so you don't have to check the location of the page to make sure it matches.

Thanks again. It's great to see someone else contributing code.

Chris_Munzo
Adventurer

Wow, I got exhausted just reading  @James ​ and  @codom ​ 's responses!  Keep in mind that Alliance Partner - AspirEDU​ has already built all of this and delivers it in a FERPA-compliant way by piggybacking on the Canvas permissions of each user.  This is only a part of what Dropout Detective does.  Yet our annual cost is likely less than the imputed cost of your time just to build it, much less maintain it.

klundstrum
Community Coach
Community Coach

I know I'm late to this party, but I am so thankful that I found this thread! Thanks for sharing all of your insights!! :smileygrin:

sharmsen
Surveyor

I just had parent teacher conference last night and figured out i had to open each course every time i wanted to show a student's grade and work. Why can't i access all student information from one place? I click on the "all students" tab and its not what you think it would be. Come on Canvas, think like a teacher and not like an engineer.

kona
Community Coach
Community Coach

 @sharmsen ​, if you'd like to provide feedback that Instructure employees will see the best place to do it is on Canvas Feature Ideas.

That being said, there is a similar idea that has already been voted on and is listed as "in development" - . My recommendation is to comment on this idea and follow it so you'll be alerted to updates.