view all students' submission times for an assessment

0 Likes
(2)

Be able to view and download all students' submission times for an assessment.

14 Comments
KristinL
Community Team
Community Team
Status changed to: Open
 
DCNolan
Community Member

Agreed. I also have need for this functionality. I can imagine it would easily be implementable through the gradebook. Ideally the field would be present in the downloaded spreadsheet.

I need to determine submission times to establish if a student submission was late, and by how many days.

James
Community Champion

@VikkiONeill 

Are you asking to view and download the submission date & time for the latest submission, the one kept by Canvas (in the case of classic quiz attempts where the highest grade may not be the latest), or all submission times (if they have multiple submissions)?

Canvas keeps the latest submission time as part of the submission record. Fetching all of the times for all of the submissions means fetching additional submission records.

If you are talking about classic quiz submissions, then the dates and times are available as a download within the Student Analysis.

@DCNolan 

The gradebook export is not a good place to put this.

You likely want it there so that you can use it to do calculations on the score and then import it back into Canvas. At first, that sounds like it would be good. However, there would need to be an extra column for every assignment in the gradebook export and that would clutter it up too much.

There would be no way to get all submission times for all submissions in the gradebook as you don't have multiple rows for each student and it would be a disaster to put in multiple columns for each submission (some students might submit 1 time while others submitted 5 times). You could put in a comma separated list of times for multiple submissions, but then it becomes difficult to parse in the spreadsheet so it's usable.

Even adding just the latest date and time, which is what would be the easiest and quickest to do, would make it less useful for some. A recurring situation is where a student turns something in on time with a good score and then turn in something late and the late penalty gets applied to the original score, even though it was higher. I could see someone wanting to use this functionality to look for students that were cheated out of their points. That would only work if you obtained all submission dates and times, not just the latest.

Adding it to the assignment page, next to the download all submissions button, would be a better place. I am not saying that Canvas should be the people to add it (I'm not sure the demand is there and it can take a while to fetch all the information and that makes it more suitable to a report that runs in the background than in the browser where people expect immediate results). I'm am saying that the assignment page is a better place for it than the gradebook. The problem is then that it's not connected to the gradebook and Canvas doesn't have a "submit grades for this assignment" option (I suggested it in April 2017 when I visited their headquarters, but I never got around to implementing it).

All of that information that people are asking for is available through the Canvas API, so it can be fetched and compiled into a spreadsheet right now. What is missing is a button that makes it easy for the end-user to do.

DCNolan
Community Member

Thanks @James 

These are all good points. 

I would be surprised however, if it isn't functionality that quite a number of people would find useful. The gradebook already displays a different symbol to note something is late - the problem is that I have to go to speed-grader to identify the details for each student (which for a class size in the order of hundreds is no minor task). Perhaps even the submission times displaying if you hover over the late symbol in gradebook would be a good step forward. This way I could scroll down through the list and manually write down the details I need, rather than clicking back and forth many times.

Our previous VLE did provide a simple excel sheet with submission times against each student. Of course, the difference there was that when a student resubmitted, the previous submission got overwritten. I guess there is good reason why CANVAS stores all submissions.

I haven't used the API although this has been suggested to me on previous challenges I've encountered. I guess I do define myself an end-user, rather than a developer.

James
Community Champion

@DCNolan 

I think we're talking about two different things. The original poster said they wanted to download them and I said the gradebook export (emphasis this time) is not a good place to put it.

If you filter your gradebook and then open SpeedGrader, the filtering carries over. That is intended to help those with large classes have a better experience with SpeedGrader.

If you are just wanting to see the time displayed, then putting it on the grades tray could be beneficial and would be faster than SpeedGrader where you have to load the submission and comments as well. SpeedGrader has a large overhead -- it downloads all of the submission metadata before any student is shown.

I still doubt that the usage rises to the level that Canvas would want to do it. I teach math and there are lots of people who teach math who have been suffering from the inability of Canvas to do things for years (I've been using Canvas since 2012). Canvas designs for the middle (depending on who you listen to) 60% or 80% of the users and so the top and bottom end users don't see things. Canvas makes the information available through the API and that's how they enable people who need more than what the interface gives to get things done.

VikkiONeill1
Community Member

Thanks @James and @DCNolan 

The reason I requested this, was because I had an issue with some students colluding on an open book assignment. I wanted to quickly be able to see at what time the students had uploaded their assignment to Canvas. When you view an individual assignment in SpeedGrader, it tells you the submission date/time in the top right corner, so I figured since the information is already stored somewhere in the Canvas ether, it wouldn't be that hard for it to be downloadable at the class level.

James
Community Champion

@VikkiONeill1 

While it's not a download of all of the submission times, SpeedGrader will do more than just showing the time when they submitted. It will allow you to sort by the time they submitted (go to Options in SpeedGrader and sort by the date they submitted the assignment). Then you will be able to scroll through the students looking for those who submitted near each other and view their submissions as well to compare for other similarities that you couldn't check from just a list of submission times.

VikkiONeill1
Community Member

Thanks @James . I still feel it would be beneficial to have this information as a downloadable list of submission times, as this is effectively what I have to provide to the exam board investigation anyway - typing up 80+ students' submission times manually into MS Excel is tedious, especially when the information is already stored somewhere.

DCNolan
Community Member

@VikkiONeill1  Thanks, I think you have confirmed that we're suggesting the same functionality.

I have used the speed-grader workaround, but for large class sizes it is cumbersome.

James
Community Champion

So, I have about 10 minutes before I have to leave for the morning. Here is something that you can do while you wait.

Find the assignment ID. This can be from the URL for an assignment, but for a quiz you will need the assignment ID rather than the quiz ID. The safest place for any type is from the Assignments page. Mouse over the title and look at the URL it would go to. You need the number at the end.

Example: for <instance>/courses/3402909/assignments/34979919 you need the 34979919

Go to the graphiql in Canvas. This is your main Canvas instance plus /graphiql at the end.

Paste this code into the query box at the top

query AssignmentSubmissionTimes ($assignmentId:ID!){
  assignment(id: $assignmentId) {
    submissionsConnection {
      nodes {
        user {
          _id
          sisId
          sortableName
        }
        submittedAt
      }
    }
  }
}

In the Query Variables box, paste this, but change the ID to the ID that matches your needs.

{ "assignmentId": 34979919 }

Then click the big Execute Query (Triangle pointing to the right) button at the top.

Select the output on the right side and copy it to the clipboard.

Go to a site that will convert JSON to CSV, such as the one I linked to.

Paste your JSON from the clipboard into the box and you'll have a spreadsheet with the names and submission times.

You may not be able to see the sisID based on permissions at your institution. You can modify the query to return other information that you need.

If you want to be able to copy/paste this into Excel instead of downloading a CSV, then click on the settings gear to the right of the paste box and change the delimiter to tab instead of comma before you paste the JSON into the box.

 

My 10 minutes are up. This gives some idea of how to get the information and doesn't require @DCNolan to use the API. Although it could be programmed and a button could be added to make it easier.

DCNolan
Community Member

@James Thanks for your efforts on this. It works for me.

I haven't used the CSV converter for GDPR reasons, but I can hopefully manage that myself through VB.

James
Community Champion

I'm not affected by GDPR, so I don't know what the restrictions are exactly. I suspect the issue is sending information somewhere else, potentially outside the country. You're correct that the data.page conversion I linked to does that.

I did find https://konklone.io/json/ where the conversion is done completely within the browser without sending any information to another site. It also recognizes the structure of the JSON as coming from a graphql query and returns fairly nice output.

There are also command line tools that will convert JSON to CSV so it also runs completely on your machine.

snijim
Community Member

Please add this as a baseline feature, as I use early submission as a performance incentive.

ProductPanda
Instructure
Instructure
Status changed to: Archived
Comments from Instructure

As part of the new Ideas & Themes process, all ideas in Idea Conversations were reviewed by the Product Team. Any Idea that was associated with an identified theme was moved to the new Idea & Themes space. Any Idea that was not part of the move is being marked as Archived. This will preserve the history of the conversations while also letting Community members know that Instructure will not explore the request at this time.