Showing results for 
Search instead for 
Did you mean: 
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

I don't have the user ID and SIS ID switched according to the student account info. See below and compare with screenshots in my last reply.

(Screenshots deleted due to student privacy)

The script does not work for me as an admin either.  When I click the button, I get just a blank screen. 

Highlighted‌, do these screenshots depict actual names and contact information for students? Please confirm asap that these are "fake" or "dummy" accounts you are using to test and troubleshoot; if they are not, please remove the screenshots, as they violate students' privacy.

Community Member

Hello​ &​​,

I have a batch of code that synthesized your posts. I'm having a tough go getting the last block to work and I was wondering if either of you could please give the code a look?

// ==Canvas All Grades==

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

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

if (matches) {

  if ($('#jj_allgrades').length == 0) {

    var url = '/users/' + matches[1] + '/grades';

    $('#right-side-wrapper div').append('<a id="jj_allgrades" class="btn button-sidebar-wide" href="' + url + '"><i class="icon-gradebook"></i> View All Grades for Student</a>');



// ==useURL Script ==

var userURL = '/users/' +matches[1]+'/profile/.json?callback=';

var script = document.createElement('script');

// adding src with callback name

script.src = userURL;

// insert script to document and load content


// == studentInfo & studentName


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

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

   var userID = originalURL[2];


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


   $.getJSON(studentinfo, function(json){


   var studentName = '<center> <h3> Grades for ' '</h3> </center>';




// ==end of line ==

I'm not seeing the last block ("studentInfo & studentName") load in the when the URL /users/*/grades launches.  I would greatly appreciate any feedback either of you have on why it's not working and any possible resolution you can think of!

Thank you!!!

Highlighted​, could you take a look at the two scripts I linked to below and see if they help?

Canvancement Grades

It's a GitHub repository I set up a month ago and am still waiting for the master unveil, but got busy with the teaching (my full-time job), so I'm slowly leaking it.

There are logic issues with splitting the path, so I use a regex to get it.

The other issue is that there has to be two scripts because they run on separate pages.

The all-grades was the first one that creates the link to the grades page with the nice button.

The name-grades one also replaces the name entry that contains the caller's name with the name of the person, rather than appending it like you're attempting.

Community Member

I really appreciate the assistance - your suggestion paid off!!!  I was able to make the script work. 

Thank you so much!


Community Coach
Community Coach​, would you mind sharing the code in case someone else finds this post and would find it useful to do something similar to what you're doing?




This is a really interesting work around! Any idea which permissions make this page visible to a user? I'm assuming they need to have some type of admin status on the server to see that grades page.



You said in your reply that you have  "...even a caseload where staff can make a custom list of students they would like to "follow/monitor""  How did you did this and can you share a screen shot?  Also, what permission set does the person doing all of this have to do?  I'm assuming that your caseload folks are not top level administrators, so how are you doing that?




Hi Joe,

To do this it uses the permissions we have given our application, so it is not tied to the Canvas user's permissions.

Here's a screenshot




My school is looking to do something exactly like what you have shown above. I've read through this thread, but must admit I am not really a coder and much of it is above my head. Can you tell me what platform/application you used to build the above report? Thanks!