function stats(data) {
    var myId = data["student"]["id"];
    var myGrade;

    var finalGrades;

    data["evaluations"].forEach(function(grades) {
        if(grades["name"] === "Pauta Final") {
            finalGrades = grades;
        }
    });

    finalGrades["grades"].forEach(function(element) {
        if(element["id"] === myId) {
            myGrade = element["grade"]
        }
    });

    var total = finalGrades["grades"].length;
    var above = 0;
    var same = 0;

    finalGrades["grades"].forEach(function(element) {
        if(!isNaN(element["grade"]) && element["grade"] > myGrade) {
            above += 1;
        } 
        if(element["grade"] === myGrade) {
            same += 1;
        } 
    });

    console.log("total: ", total);
    console.log("above: ", above);
    console.log("same: ", same);
    console.log("below: ", total-above-same);

    console.log("you're in the top ", (above+1)/total, "%");

    console.log(data["name"], '\t', myGrade, '\t', above, '\t', same, '\t', total-above-same)
}

@@ -1,16 +1,653 @@
+function httpGet(url)%0A%7B%0A    var xmlHttp = new XMLHttpRequest();%0A    xmlHttp.open(%22GET%22, url, false);%0A    xmlHttp.send(null);%0A    return xmlHttp.responseText;%0A%7D%0A%0Acourserows = document.getElementsByClassName(%22scplanenrollment%22);%0A%0Avar statsURIs = %5B%5D;%0Afor(const row of courserows) %7B%0A    statsTag = row.getElementsByTagName(%22a%22)%5B1%5D;%0A    if(typeof statsTag != 'undefined') %7B%0A        statsURIs.push(statsTag.href);%0A    %7D%0A%7D%0A%0A// GET all the URIs, calculate all the things%0Afor(const uri of statsURIs) %7B%0A%09// get stats from a page%0A%09statspage = httpGet(uri);%0A%0A%09data = statspage.match(/data = (.*);/);%0A%09data = JSON.parse(data%5B1%5D);%0A    stats(data);%0A%7D%0A%0A
 function stats(d

Add code for bulk processing