Tuesday, June 12, 2018

Individual Rank Sheets - Google Sheets to the Rescue

Over the last couple of years, as my game has grown, so has my need to add elements that improve the sharing of ranks, perks, and standings with my students. Up until now, I have published our leaderboard two ways:

  • a "combined" leaderboard that displays the Top 15 students among all 170 of them.
  • each grade level gets their own, which ranks all 34 students for that particular class.
I also publish a Badge Sheet for each class, where students can go and see which of the badges they have earned. All of this already populates automatically from the "master leaderboard" I shared a while back (Leaderboard and Badging with Google Sheets).

This works well to inform the students of their standings. However, it requires that students navigate between several web pages and do some scrolling, often complaining about not "finding themselves" within the data. I also often worry about the students who are at the bottom of the leaderboard since these placements within the ranks are public to all my students. As I pondered these problems, I also thought about a way to give students some control about what information is shared with all and what is "just for each one".

In searching for an answer, I came across two blog posts that should be mentioned as the inspiration for the sheets I came up with, @MrMatera's "Standards Based Grading Gamified and Googled" and @MrPowley's "XP Grading: Video Blog". As always, these two masters of the gamified classroom had already come up with solutions that better informed the students of their progress - The Individual XP Sheet. With a name in hand, and knowing that it was possible to share individually with students, I set about creating one that made sense for my classroom, using a combination of IMPORTRANGE and conditional formatting so that everything would auto-populate without me having to open up a whole bunch of individual sheets. Remember I have 170 individual sheets to maintain.

Just like in the VLookup post I published a few days ago, I would love to simply give you a template to use tomorrow. Unfortunately, even if you use what I share in the set-up procedure that follows, the references for the cells will need to change as soon as you create a copy.

Before I go into explaining the set-up and scare you (it is time-consuming, but you only have to do it once!), let me show you the magic. In the following mini-video you see my leaderboard, my "Teacher Master Sheet" spreadsheet, and a Student Individual XP Sheet

Now that you've seen it in action, let me explain what to do to set this up. It all starts with the Leaderboard, where I need to be very consistent in the placement of the information, especially student names and Emails so that things do not become complicated down the line. In order to accomplish this, the first three columns on the Leaderboard sheet are the only ones where I actually type names and e-mails. The first three columns (A:C) in every other sheet on the leaderboard, where I will type in or import scores, get:


With that in place, it is time to create the Teacher Master  Sheet template. I created mine using Alice Keeler's TemplateTab so I would not have to duplicate each student tab myself. If you open the Teacher Master  Sheet template, you will notice that it includes 4 tabs instead of Alice's 2. The Heraldry and Standing tabs, which are imported from the Leaderboard using TRANSPOSE(IMPORTRANGE) and IMPORTRANGE respectively, were necessary for my purposes since I wanted to display elements of both but limit the delay it could cause as I was importing the other elements.

The mini-leaderboard is set to always display the owner student in the middle and two students above and below. It combines some manipulation of conditional formatting and If- Match statements in order to not get errors when the student is at the top or bottom of the class leaderboard. This is why I had to add the Standing sheet.

Once my template was done, I used IMPORTRANGE to add the names to the roster and ran Alice's TemplateTab script. Since I ran the script after I had added the Heraldry and Standing sheets I ended up with a couple of sheets that were mislabeled. If this happens to you, simply discard them and/or duplicate and rename what you need. You will only run the script once for each Teacher Master sheet.

Then comes the onerous task of referencing each of the correct cells from the Leaderboard, as C3 will need to become C4 and D3 will become D4, etc. I wish there was some way to automate this, but I have yet to find it. However, it more painstaking than anything else, and just like the script, I only need to do this for the set-up, and never again. I opened the leaderboard, and for each name, I found the row where it was located and changed the numbers accordingly.

Once I had finished all of them and had the Teacher Master (sharing one where all the numbers have been changed for 34 students, though if you use it you would need to change the leaderboard reference), it is time to create the individual sheets. One would think that you can just open up a spreadsheet and copy/paste, but that does not preserve the format that I painstakingly created, plus I want them to all update automatically, so instead there are a couple more steps.

To preserve the formatting, I first created a new spreadsheet (I called it Student Template). Then I chose one of the student sheets in the Teacher Master. I clicked on the arrow next to the name and chose duplicate sheet. It asked where you want it, and of course, I selected Student Template. Once it is duplicated, I went to the Student Template and saw it had added a tab called Copy of "Name". I deleted Sheet 1, and instead of selecting and deleting the cells in Copy of "Name", I selected and cleared the cells. This preserves all formatting, including all conditional formatting.

Of course, since the referenced sheets were no longer there, it looked like there was an error, but I knew what the final step was...

I made a copy of the Student Template, renaming it with the correct name for my first student (Name 1 in the example), and went back to my trusty =IMPORTRANGE formula.

=IMPORTRANGE("URL of TeacherMaster","'Name 1'!A1:M14")

Notice that Name 1 includes single quotes, this is because the sheet name has a space between name and 1. This is not needed if there are no spaces in the Sheet Name.

After doing this final step 34 more times, I had my first complete set of Individual Student Sheets.

I use the same basic sheets for all my 5 classes, but I do have five leaderboards (where the badges differ) and also like to keep the Teacher Masters separate. This means that I had to change the leaderboard URL to create each of the Teacher Masters before running the Alice's TemplateTab script.

The last step is to share each Individual Student Sheet with the student "owner", which I accomplish the regular way (share, type e-mail, can view). 

Those individual links can also be added to a spreadsheet or blog post where names are sorted alphabetically and since only the student "owner" and myself have access, the risk of oversharing is minimized. Now, for those students that perhaps do want to share their badges or rank insignia, there is always the possibility of creating mini-sheets within their individual sheet. Using =arrayformula(index('Name of student sheet'!C2:E6)) you can select specific cells to share. If you publish just that mini-sheet to the web, students can then get the embed code and publish in their blogs or e-portfolios.

Saturday, June 9, 2018

Assign XP automatically using Vlookup - Google Sheets

My last couple of posts ended with a question, "How can I give the XP generated by sidequests or Boss Battles automatically to students?" This is a key question in both instances because:

  • In true gamification style, it is imperative that students' can instantly see their progress in ranks. The immediacy of the auto-updating of progress serves as a motivator, and there is nothing worse for my students to have to wait until I manually input the data.
  • I really do not want to have to input values manually, it is time-consuming and prone to error, especially when you have multiple submissions by the same student.
Much like I ask my students to do when attempting to solve a problem, I first asked what is it exactly that I need. So in simplest terms, "I needed a way to have sheets look-up an e-mail (name) in one workbook (Boss Battle or side quest results) and input the value that accompanies it into another workbook (leaderboard). I set about finding the answer and after several attempts, I found the answer is a combination of Vlookup/import range combination. 

As much as I would love to provide you with a template that you can simply copy and start using, it is not as easy since the workbook and cell references need to be changed in order for this to work. What I can do is provide you with a skeleton and an explanation of what needs to be done. 

1. Have your leaderboard set up with the e-mail addresses of your students - e-mail is necessary since the other sheets will match the e-mails auto-collected in the corresponding forms. Here is the one I used to set this up. For a full explanation of how just the leaderboard works you may wish to visit "Leaderboard and Badging with Google Sheets".

2. Have your boss battle sheet(s), each set up with a pivot table that sorts the data by e-mail and "sum of score". I am sharing a blank one, just remember that this one is tied to a specific form. To recreate a boss battle sheet with your own question set, look at my post Boss Battles with Google Forms/Sheets
You can use the process I am describing with any form responses/quiz you create on Google sheets. What needs to be done is to have a form that collects e-mails automatically. Once you have your form responses sheet, add a pivot table. I remane mine "scores".

3. It is now time to connect both sheets. On your destination sheet, in this case the Mastery Quest sheet in my Leaderboard, add the following formula to the first cell where you would like your imported scores to appear.

=IFERROR(VLOOKUP(A2,IMPORTRANGE("1O5AhXP4qJhbcNbjzDOI7-trYDjSDBQtN4iA2MIDzfeo","scores!A3:B"),2,0), 0)

The big string (1O5AhXP4qJhbcNbjzDOI7-trYDjSDBQtN4iA2MIDzfeo), which must remain in quotations, is the URL for the sheet the scores are coming from.

Important to note:
  • Depending on the sheets version you are using, you may first need to allow both sheets to connect. If you paste the formula and it does not seem to work, add =IMPORTRANGE("long sheet identifier","scores!A3:B"),  anywhere on the destination sheet. A little box will appear asking if you want to connect the sheets. Once they are connected, delete the formula. This is just to give it access.
  • If you rename your Pivot Table anything other than scores at any time, you must manually change it in the formula.
  • The 2 that shows after the parenthesis in your formula identifies the column where the data you want to bring is found. If you add any other values to your Pivot Table, or you rearrange them in any way, you must change this number to whatever number column your data is in.

4. Finally, it is just a matter of copying the formula down the column in your target sheet (in this case the leaderboard sheet). In order to accomplish this quickly, and to save you from the carpal tunnel syndrome that would inevitably arise from all that Ctrl+C/Ctrl+V, simply position yourself on the cell you want to copy down, and drag the little blue box that appears, down.

Once you have copied down the formula, it is a good idea to double check that the references changed correctly. 

When you are setting this up, all the values will be zero. The same is true if there is no Email match between the quiz/form and the destination sheet/leaderboard. This is helpful if you are running a boss battle or if you have absent students, as you can quickly see who has not done the work at all. However, once your students have submitted their quiz, your leaderboard scores will be auto-updated to reflect this "change".

 This same process would need to be repeated for each quiz/form you want to Vlookup, but really once you have done it a couple of times you will find that it is not as cumbersome as it seems. It simply boils down to creating a pivot table to aggregate your data, copying the Vlookup formula and changing the reference to the corresponding sheet. You can also modify it to assign XP only for max score changing that final column reference in the formula, or if you add another value column you could even use averages. Whatever makes the most sense for you and your students.

Also, it is important to note that you do not have to have a pivot table other than to summarize your data initially. For example, I use Alice Keeler's Rubrictab to grade my students' work. Using the same process described above, with the corresponding modifications to the references in the formula, I can have the roster sheet I create from her template each time I grade linked to my leaderboard.

=IFERROR(VLOOKUP(A2,IMPORTRANGE("1VVD83QukeZ6P3pMmpoJnxEt9cgg8tv2LnnirkM71Vso","roster!B2:E"),4,0), 0)


"1VVD83QukeZ6P3pMmpoJnxEt9cgg8tv2LnnirkM71Vso" is the workbook identifier
"roster!B2:E" is the sheet name and cell references (Email Address through Score)
4 is the number of the column where the score is found, starting the count from column B

For more ideas on the use of Vlookup, you may want to read Mr. Powley's post "The Magic of VLOOKUP: G.Sheets, Boss Fights, and Badges".

As always, if anything seems confusing or you have questions, leave a comment or drop me a Twitter question @MarianaGSerrato.

Saturday, June 2, 2018

Boss Battles with Google Forms/Sheets

For a long time, I've been thinking about how to do more than just award experience points (XP) to my students who complete a mastery quest (quiz/test). I've been toying with the idea of making them a bit more interactive and wanted a way to show students how the Boss would lose hit points (HP) as they answered.

Adam Powley (@MrPowley) wrote a piece on Dreadsheets a few months ago, detailing his system, using a very elegant mix of Google sheets, group roles, and dice, kindly sharing all that is needed to implement his system. Make sure to read his post, as it is truly masterful.

His system works really well when you have all those elements in place, but I sadly am not there yet. However, this did not deter me from continuing my pursuit, so borrowing some of his ideas, but trimming it down to the game elements that I do have, I came up with a simpler version that works for me. Before I get down to the nitty-gritty, let me show you how it works.

These boss battles use the simple quiz version of Google Forms and its corresponding Form Responses spreadsheet. You can obtain the folder where I housed both here, though you may just need to make a copy of the Boss Battle Share (Responses).
Also, although I have deleted the data and created several copies, you may find that if you use a copy directly it still carries over some of the "extras". If this is the case, simply create your own Quiz as you would normally do, and once you have the corresponding Form Responses spreadsheet, add a Boss Battle sheet where you copy/paste everything that is included in cells A1:L16. If you do this, you will also need to create a new tachometer, which is a simple gauge chart; if you do not know how to do this, here are some instructions (Stop at slide 8 since you will not need to embed it anywhere else)

Elements of the Boss Battle Sheet (although embedded below, you may want to open the link if it is not quite as clear as you wish it to be.)

Finally, I set the quiz to automatically collect email adresses, release grade immediately after each submission, respondents can see missed questions, and, depending on what I want, either limit to one response or not. 

With all of this in place, it is just a matter of sharing your quiz with students, and displaying the Boss Battle sheet to the class using your projector and screen. As students complete the quiz and submit their responses, they can see the "damage" they inflicted on the boss, until eventually, they defeat it.

I usually provide individual XP after a boss battle like this one to encourage students to actively participate. The XP for each student can easily be obtained from the Form Responses sheet. Also, once the boss has been beaten, you can use the information from that same sheet to determine which questions were missed most often and/or sort it to find out how many responses each student submitted as well as their specific answers. 

Now, I do realize that one student can answer 50 times (simply memorizing answers), while another student can decide to not even try once. This can be somewhat deterred by limiting the number of responses so that the reluctant student has to answer in order for the whole class to beat the boss. You can also make use of the shuffle answers and the shuffle questions options on the form. This at least "forces" the students to re-read the questions and not just memorize answer placement. You could also make the quiz much longer (this 10 question quiz is just an example, with questions that are not particularly insightful). I do have to say that when I did the latter, making a 25 question quiz, my middle-schoolers complained that it was way too much. They like that relatively immediate "hit" and looking up to see the boss "transformation" 

I would love to hear what you think about all of this. 


I thought you may be interested to know what my students had to say about this format of "testing". I presented them with a 10 question and a 20 question format, and as you can see, their response was positive, although they all agreed that a shorter quiz was more engaging than a long one.

If you would like to know how to automatically add these scores to your leaderboard or grade book, I invite you to take a look at "Assign XP automatically using Vlookup - Google Sheets".