Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- updateRoster
- by Jared Rhizor (http://jaredrhizor.com/)
- Modified for use with Riot API by Price Poston
- -----------------------------------------
- On the script editor menu click:
- Run > updateRoster
- to update the roster immediately.
- To update periodically, on the script editor menu click:
- Resources > Current project's triggers
- Click the notification to create a trigger.
- Select to run updateRoster from the first dropdown.
- Select Time-driven under events and select the interval to run the script.
- */
- // deromanize: from http://blog.stevenlevithan.com/archives/javascript-roman-numeral-converter/comment-page-1
- function deromanize( roman ) {
- var roman = roman.toUpperCase(),
- lookup = {I:1,V:5,X:10,L:50,C:100,D:500,M:1000},
- arabic = 0,
- i = roman.length;
- while (i--) {
- if ( lookup[roman[i]] < lookup[roman[i+1]] )
- arabic -= lookup[roman[i]];
- else
- arabic += lookup[roman[i]];
- }
- return arabic;
- }
- // wait: from https://stackoverflow.com/questions/14226803/javascript-wait-5-seconds-before-executing-next-line
- function wait(ms){
- var start = new Date().getTime();
- var end = start;
- while(end < start + ms) {
- end = new Date().getTime();
- }
- }
- // toTitleCase: from http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript
- function toTitleCase(str)
- {
- return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
- }
- function updateRoster() {
- var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Responses");
- var rows = sheet.getDataRange();
- var numRows = rows.getNumRows();
- var values = rows.getValues();
- //var NAME_COL = 0;
- var SUMMONER_NAME_COL = 1;
- var num_unranked = 0;
- var num_bronze = 0;
- var num_silver = 0;
- var num_gold = 0;
- var num_plat = 0;
- var num_diamond = 0;
- var num_master = 0;
- var num_challenger = 0;
- for (var i = 0; i < numRows; i++) {
- // get row
- var player = values[i+1];
- // check if it reaches end of list of users before end of sheet
- if(typeof player === 'undefined') break;
- //var name = player[NAME_COL];
- var summoner_name = player[SUMMONER_NAME_COL];
- var hidden_score;
- var rank;
- var ranked;
- var tier;
- var lp;
- var division;
- var summoner_id;
- var summoner_exists = true;
- // Riot api key
- var key ="?api_key=";//Removed this
- wait(2666);//Wait so as to not pass riots limit on calls. This sets a 90 call limit per two minutes.
- try{
- var resp = UrlFetchApp.fetch("https://na1.api.riotgames.com/lol/summoner/v3/summoners/by-name/"+summoner_name+key);
- }
- catch (err) {
- summoner_exists = false
- }
- var resp_info = JSON.parse(resp.getContentText());
- // check if user exists
- if(summoner_exists)
- {
- summoner_id = resp_info.id;
- var level = Math.round(resp_info.summonerLevel);
- if(level<30)
- {
- rank = "Level " + level;
- ranked = false;
- num_unranked++;
- }
- else
- {
- var resp2 = UrlFetchApp.fetch("https://na1.api.riotgames.com/lol/league/v3/positions/by-summoner/"+summoner_id+key);
- var resp2_info = (JSON.parse(resp2.getContentText()));
- // check if user is ranked, get the proper index for solo queue
- if(resp2_info[2] != undefined
- && resp2_info[2].queueType == "RANKED_SOLO_5x5")
- {
- tier = resp2_info[2].tier;
- division = resp2_info[2].rank;
- rank = toTitleCase(tier) + " " + division;
- lp = resp2_info[2].leaguePoints;
- ranked = true;
- }
- else if(resp2_info[1] != undefined
- && resp2_info[1].queueType == "RANKED_SOLO_5x5")
- {
- tier = resp2_info[1].tier;
- division = resp2_info[1].rank;
- rank = toTitleCase(tier) + " " + division;
- lp = resp2_info[1].leaguePoints;
- ranked = true;
- }
- else if(resp2_info[0] != undefined
- && resp2_info[0].queueType == "RANKED_SOLO_5x5")
- {
- tier = resp2_info[0].tier;
- division = resp2_info[0].rank;
- rank = toTitleCase(tier) + " " + division;
- lp = resp2_info[0].leaguePoints;
- ranked = true;
- }
- else
- {
- rank = "Level " + level;
- ranked = false;
- num_unranked++;
- }
- }
- // calculate hiddenScore
- if(ranked)
- {
- var decimal_division = deromanize(division);
- var division_score = (6-decimal_division) * 100;
- var tier_score;
- if(tier == "CHALLENGER")
- {
- tier_score = 7000;
- num_challenger++;
- }
- else if(tier == "MASTER")
- {
- tier_score = 6000;
- num_master++;
- }
- else if(tier == "DIAMOND")
- {
- tier_score = 5000;
- num_diamond++;
- }
- else if(tier == "PLATINUM")
- {
- tier_score = 4000;
- num_plat++;
- }
- else if(tier == "GOLD")
- {
- tier_score = 3000;
- num_gold++;
- }
- else if(tier == "SILVER")
- {
- tier_score = 2000;
- num_silver++;
- }
- else if(tier == "BRONZE")
- {
- tier_score = 1000;
- num_bronze++;
- }
- hidden_score = division_score + tier_score + lp;
- }
- else
- {
- hidden_score = level *.01;
- }
- // write output
- var row_num = i+2;
- sheet.getRange("L" + row_num.toString()).setValue(hidden_score);
- sheet.getRange("M" + row_num.toString()).setValue(rank);
- }
- else
- {
- var row_num = i+2;
- sheet.getRange("L" + row_num.toString()).setValue(0);
- sheet.getRange("M" + row_num.toString()).setValue("Does Not Exist");
- }
- }
- // color
- var disp_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Roster");
- var challenger_start = 2;
- var master_start = challenger_start + num_challenger;
- var diamond_start = master_start + num_master;
- var plat_start = diamond_start + num_diamond;
- var gold_start = plat_start + num_plat;
- var silver_start = gold_start + num_gold;
- var bronze_start = silver_start + num_silver;
- var unranked_start = bronze_start + num_bronze;
- disp_sheet.getRange("B" + challenger_start.toString() + ":H" + (numRows).toString()).setBackground("#FFFFFF");//Reset colors to white
- if(num_challenger>0)
- disp_sheet.getRange("B" + challenger_start.toString() + ":H" + (diamond_start - 1).toString()).setBackground("#e84495");
- if(num_master>0)
- disp_sheet.getRange("B" + master_start.toString() + ":H" + (diamond_start - 1).toString()).setBackground("#fc8c67")
- if(num_diamond>0)
- disp_sheet.getRange("B" + diamond_start.toString() + ":H" + (plat_start - 1).toString()).setBackground("#5daad8");
- if(num_plat>0)
- disp_sheet.getRange("B" + plat_start.toString() + ":H" + (gold_start - 1).toString()).setBackground("#008657");
- if(num_gold>0)
- disp_sheet.getRange("B" + gold_start.toString() + ":H" + (silver_start - 1).toString()).setBackground("#ffd700");
- if(num_silver>0)
- disp_sheet.getRange("B" + silver_start.toString() + ":H" + (bronze_start - 1).toString()).setBackground("#c0c0c0");
- if(num_bronze>0)
- disp_sheet.getRange("B" + bronze_start.toString() + ":H" + (unranked_start - 1).toString()).setBackground("#7f6000");
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement