Showing results for 
Search instead for 
Did you mean: 

Why is there inconsistency between participation counts?

In the course we are managing, the students have responded to a number of discussions.  When we look at the # of participations reported under the course analytics list they are consistently lower than the number reported when looking at an individual student's analytics.  Even better is there a way we can get an accurate account of participations for all the students more efficiently than looking at the analytics for each individual student?  There are over a thousand in the course and we need to identify each one that reached a certain participation threshold.

7 Replies

You might see if How to Count Student Discussion Posts  can help with the collection process.

This worked well enough for our current situation.  The only problem was that our dataset in Canvas was too large (~2000 students and lots of discussions), so the script run timed out before finishing the count.  Google terminates the script at around 5 minutes.  As a work around, I watched the tallying and got a sense that I could interrupt the run when the count on a particular discussion reached a certain number.  Then I ran the update and the uncounted discussions were treated like new discussions, so I think I got close to a total count.  It would be nice if there was a way to override the Google run-time limit.  In any case, thanks for putting this tool together  @James ​

 @burrasto ​,

You're on the right track. Here's a fuller explanation.

The script looks for discussions that have already been analyzed when you run it and there is a way to do an incremental load rather than a full load.

So, let's (for simplicity) say you have 10 discussions 1 ... 10 and the first time it gets through 3 complete discussions and part of the 4th one. What you should do is go into the Data sheet and delete all the stuff for Discussion 4 and then re-run the process.

You should use "Refresh All Discussions" the first time and then use "Append New Discussions" for any subsequent runs. You just need to make sure you delete any partial loads from the Data page before doing it.


If you can't get even an entire discussion done within 5 minutes, I don't know how to help. That's a limit of Google. I know that some people have saved how far they got in the process within the spreadsheet so it could pick back up at that point if it was restarted. My work-around was the "Append New Discussions" option.

Thank you that is helpful to look at.  I notice where you have your app posted you say that version 3 is supposed to count group discussions as well.  Is there something I have to do to get the group discussions to be counted as well that I'm not seeing?

 @burrasto ​

Theoretically, no, but I suspect it's running into the timeout issue.

That said, here are some things that might influence it not working.

  • Group discussions are processed last after all the regular discussions are due.
  • Group discussions take a LONG time to process. It has to obtain a list of all discussions and then go through them and then download a list of all of the discussions and match them up. Then it cycles through those discussions and downloads the full discussion and does the analysis. This was substantially slower in my class of 2 sections and 40 students, so it is very possible that it's timing out.
  • The group discussion stuff is not nearly as well tested as the other parts of it and it is entirely possible that I missed something or that there is a bug in the code.
  • I'm also a Canvas Admin, so it's possible that I have information a regular instructor wouldn't have. I don't think I used any of that here, but it might be showing me something (as an admin) that it doesn't show instructors.
  • The script fetches the list of discussions and then it downloads the entire list of students before it starts processing the discussions. Google Sheets waits for the fetch command to finish before it moves on and then it has to process the data that was downloaded. On the other hand, JavaScript in general is asynchronous and I could perform 5 or so simultaneous requests. For large classes, you may be spending a bunch of time waiting for the users to load before it ever gets to the discussions.

As with most of what I write, it's a "it works for me, I hope you can get something out of it" scenario.

I have no way of testing 2000 students as we have nothing that large at our school (we have one course with all of our enrollments in it and it has 5300 students, but it's a resource course and there are no discussions.

The script could probably be modified to run on one section at a time rather than the entire course at a time, which may or may not be helpful -- especially if you let people from different sections into the same group.

It may also be possible to cache the list of users in the spreadsheet and then get the information from there rather than downloading it from the net every time. It would be similar to the way that I check for existing discussions. I didn't do that because I have small classes and enrollments may change as people transfer in or out of sections. In fact, you could also write the processed discussions to another sheet as well, but then you might have the problem of someone deleting the information in one spot but not from the main table.

It could probably be modified to treat the Append New Discussions separately from the Refresh All Discussions. If you Append, then it doesn't fetch the user information but attempts to look it up in the existing data. If it doesn't find it, then it does a search for those specific users rather than fetching the entire thing.

That last one is probably the best approach, but it's not likely to happen on my side for a while. I've got to get ready for Spring semester and I don't even use this script as I grade discussions as they happen without trying to find an overall grade for the entire course. I've got a separate spreadsheet I'm developing that does that and provides much more detail about an individual discussion, but it doesn't do group discussions yet and it would probably suffer from the same timeout issue I think we're seeing here.

Community Coach
Community Coach

 @burrasto , Did James' response help answer your question?

Community Coach
Community Coach

Hello  @burrasto ‌...

I noticed that there hasn't been any new activity in this discussion topic for over a month now, so I thought I would check in with you to see if you had any other questions.  As  @kona ‌ asked, did the responses from  @James ‌ help to answer your question?  Do you have any outstanding questions related to your initial question?  If you could, please come back to this topic to post an update for us.  Also, if you feel that one of the responses from James has helped to answer your initial question, please go ahead and mark it as "Correct".  For now, because this topic hasn't seen any new activity for quite some time, I'm going to mark this question as "Assumed Answered", but that won't prevent you or others from posting additional replies below.  I hope that is okay with you.  Looking forward to hearing from you soon.