Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //When a user opens their sheet, this happens
- function onOpen(e){
- //List of Variables
- var ui = SpreadsheetApp.getUi();
- //Creating Menus
- ui.createMenu('Useful Information')
- .addItem('Your Sheet', 'gotoUser')
- .addItem('Info', 'gotoInfo')
- .addItem('Leaderboards', 'gotoLeaderboards')
- .addSeparator()
- .addItem('Updates', 'showUpdates')
- .addSeparator()
- .addItem('Report an issue', 'reportIssue')
- .addToUi();
- }
- //Goes to the User's Main Sheet
- function gotoUser(){
- var ws = SpreadsheetApp.getActiveSpreadsheet();
- var user = ws.getSheets()[4];
- var active = user.getRange(3, 3);
- SpreadsheetApp.setActiveSheet(user);
- SpreadsheetApp.setActiveRange(active);
- }
- //Goes to the "Info" Sheet
- function gotoInfo(){
- var ws = SpreadsheetApp.getActiveSpreadsheet();
- var info = ws.getSheets()[5];
- var active = info.getRange(4, 3);
- SpreadsheetApp.setActiveSheet(info);
- SpreadsheetApp.setActiveRange(active);
- }
- //Goes to the "Leaderboards" Sheet
- function gotoLeaderboards(){
- var ws = SpreadsheetApp.getActiveSpreadsheet();
- SpreadsheetApp.setActiveSheet(ws.getSheets()[6]);
- }
- //Shows available updates (treat this like a changelog)
- function showUpdates(){
- var html = HtmlService.createHtmlOutputFromFile('Test')
- .setTitle('Updates')
- .setWidth(300);
- SpreadsheetApp.getUi()
- .showSidebar(html);
- }
- //Reports an issue to QuitarHero
- function reportIssue(){
- var ui = SpreadsheetApp.getUi();
- var prompt1 = ui.prompt(
- 'Bug Report',
- 'What seems to be the issue?:',
- ui.ButtonSet.OK_CANCEL);
- var button1 = prompt1.getSelectedButton();
- var text1 = prompt1.getResponseText();
- if(button1 == ui.Button.OK){
- MailApp.sendEmail("Quitar@ymail.com", "Raid Sheet Bug Report", text1);
- ui.alert("Thank you for your report. QuitarHero will look into it when he has time. I apologise for the inconvenience.");
- }
- }
- //Does all kinds of fun stuff whenever a user does something
- function onEdit(e){
- //List of Variables
- //Sheet Variables
- var ws = SpreadsheetApp.getActiveSpreadsheet();
- var wsActive = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetName();
- var ref = ws.getSheets()[0];
- var build = ws.getSheets()[1];
- var mech = ws.getSheets()[2];
- var avg = ws.getSheets()[3];
- var user = ws.getSheets()[4];
- var info = ws.getSheets()[5];
- //Storage Variables
- var correctBuild = 0;
- var correctBoss = 0;
- var buildCount = 0;
- var bossCount = 0;
- var maxMech = 0;
- //Determining the MaxBuilds and MaxBosses
- for(var i=1; i<=1000; i++){
- if(ref.getRange(i, 1).isBlank() != true){
- buildCount++;
- }
- if(ref.getRange(i, 4).isBlank() != true){
- bossCount++;
- }
- if(ref.getRange(i, 1).isBlank() == true && ref.getRange(i, 4).isBlank() == true){
- break;
- }
- }
- //IF THE CURRENTLY ACTIVE SHEET IS THE USER'S MAIN SHEET
- if(wsActive == "Hadmas"){
- //Column Variables
- var buildList = ref.getRange("A:A");
- var bossList = ref.getRange("D:D");
- //Storage Variables
- var weightMech = 0;
- var valueToChange = 0;
- //Comparison Variables
- var dpsCompare = 0;
- var critCompare = 0;
- var movCompare = 0;
- var schCompare = 0;
- var downCompare = 0;
- //Finding the Correct Build
- for(var i=1; i<=buildCount; i++){
- correctBuild = ref.getRange(i, 1).getValue();
- if(correctBuild == user.getRange(3, 3).getValue()){
- correctBuild = i;
- break;
- }
- }
- //Finding the Correct Boss
- for(var i=1; i<=bossCount; i++){
- correctBoss = ref.getRange(i, 4).getValue();
- if(correctBoss == user.getRange(12, 3).getValue()){
- correctBoss = i;
- break;
- }
- }
- //Finding the maximum amount of mechanics a boss has.
- for(var i=1; i<=30; i++){
- if(ref.getRange(i, 5+correctBoss).isBlank() != true){
- maxMech++;
- }else{
- break;
- }
- }
- //Displaying Build Data
- for(var i=4; i<=9; i++){
- if(i < 8){
- build.getRange(correctBuild+4, i-1).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }else if(i == 9){
- build.getRange(correctBuild+4, i-2).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }
- }
- //Clearing Boss Data
- for(var i=13; i<29; i++){
- if(i >= 18){
- user.getRange(i, 2).clear({contentsOnly:true});
- }
- user.getRange(i, 3).clear({contentsOnly:true});
- user.getRange(i, 4).clear({contentsOnly:true});
- }
- //Displaying Boss Data
- for(var i=13; i<(18+maxMech); i++){
- //Build Average Data
- if(i < 18){
- if(correctBoss <= 5){
- if(i == 13){
- dpsCompare = avg.getRange(3+correctBuild, (correctBoss*35)-32).getValue();
- critCompare = avg.getRange(3+correctBuild, (correctBoss*35)-25).getValue();
- movCompare = avg.getRange(3+correctBuild, (correctBoss*35)-18).getValue();
- schCompare = avg.getRange(3+correctBuild, (correctBoss*35)-11).getValue();
- downCompare = avg.getRange(3+correctBuild, (correctBoss*35)-4).getValue();
- }
- avg.getRange(3+correctBuild, (correctBoss*35)-39+((i-12)*7)).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }
- if(correctBoss > 5 && correctBoss <= 10){
- if(i == 13){
- dpsCompare = avg.getRange(3+correctBuild, ((correctBoss-5)*35)-32).getValue();
- critCompare = avg.getRange(3+correctBuild, ((correctBoss-5)*35)-25).getValue();
- movCompare = avg.getRange(3+correctBuild, ((correctBoss-5)*35)-18).getValue();
- schCompare = avg.getRange(3+correctBuild, ((correctBoss-5)*35)-11).getValue();
- downCompare = avg.getRange(3+correctBuild, ((correctBoss-5)*35)-4).getValue();
- }
- avg.getRange(49+correctBuild, ((correctBoss-5)*35)-39+((i-12)*7)).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }
- if(correctBoss > 10 && correctBoss <= 13){
- if(i == 13){
- dpsCompare = avg.getRange(3+correctBuild, ((correctBoss-10)*35)-32).getValue();
- critCompare = avg.getRange(3+correctBuild, ((correctBoss-10)*35)-25).getValue();
- movCompare = avg.getRange(3+correctBuild, ((correctBoss-10)*35)-18).getValue();
- schCompare = avg.getRange(3+correctBuild, ((correctBoss-10)*35)-11).getValue();
- downCompare = avg.getRange(3+correctBuild, ((correctBoss-10)*35)-4).getValue();
- }
- avg.getRange(95+correctBuild, ((correctBoss-10)*35)-39+((i-12)*7)).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }
- //Weighted Build Average Data
- if(i == 17){
- dpsCompare = (dpsCompare / ref.getRange(correctBuild, 3).getValue())*100;
- switch(correctBoss){
- //Vale Guardian
- case 1:
- if(dpsCompare >= 40 && dpsCompare <= 65){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 40){
- dpsCompare = (dpsCompare - 40) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 65){
- dpsCompare = (dpsCompare - 65) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Gorseval
- case 2:
- if(dpsCompare >= 50 && dpsCompare <= 70){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 50){
- dpsCompare = (dpsCompare - 50) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 70){
- dpsCompare = (dpsCompare - 70) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Sabetha
- case 3:
- if(dpsCompare >= 40 && dpsCompare <= 70){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 40){
- dpsCompare = (dpsCompare - 40) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 70){
- dpsCompare = (dpsCompare - 70) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Slothasor
- case 4:
- if(dpsCompare >= 40 && dpsCompare <= 60){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 40){
- dpsCompare = (dpsCompare - 40) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 60){
- dpsCompare = (dpsCompare - 60) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Matthias
- case 6:
- if(dpsCompare >= 35 && dpsCompare <= 55){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 35){
- dpsCompare = (dpsCompare - 35) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 55){
- dpsCompare = (dpsCompare - 55) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Keep's Construct
- case 8:
- if(dpsCompare >= 55 && dpsCompare <= 75){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 55){
- dpsCompare = (dpsCompare - 55) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 75){
- dpsCompare = (dpsCompare - 75) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Xera
- case 9:
- if(dpsCompare >= 45 && dpsCompare <= 70){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 45){
- dpsCompare = (dpsCompare - 45) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 70){
- dpsCompare = (dpsCompare - 70) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Cairn
- case 10:
- if(dpsCompare >= 45 && dpsCompare <= 70){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 45){
- dpsCompare = (dpsCompare - 45) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 65){
- dpsCompare = (dpsCompare - 65) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Mursaat Overseer
- case 11:
- if(dpsCompare >= 65 && dpsCompare <= 85){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 65){
- dpsCompare = (dpsCompare - 65) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 85){
- dpsCompare = (dpsCompare - 85) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Samarog
- case 12:
- if(dpsCompare >= 35 && dpsCompare <= 60){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 35){
- dpsCompare = (dpsCompare - 35) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 60){
- dpsCompare = (dpsCompare - 60) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- //Deimos
- case 13:
- if(dpsCompare >= 50 && dpsCompare <= 75){
- user.getRange(13, 4).setValue(0);
- }
- if(dpsCompare < 50){
- dpsCompare = (dpsCompare - 50) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- if(dpsCompare > 75){
- dpsCompare = (dpsCompare - 75) * ref.getRange(maxMech+1, 35+correctBoss).getValue();
- user.getRange(13, 4).setValue(dpsCompare);
- }
- break;
- }
- //All Bosses
- //Crit Comparison
- if(critCompare >= 92){
- critCompare = (critCompare - 92) * ref.getRange(maxMech+2, 35+correctBoss).getValue();
- user.getRange(14, 4).setValue(critCompare);
- }else{
- user.getRange(14, 4).setValue(0);
- }
- //Moving Rate Comparison
- if(movCompare >= 85){
- movCompare = (movCompare - 85) * ref.getRange(maxMech+3, 35+correctBoss).getValue();
- user.getRange(15, 4).setValue(movCompare);
- }else{
- user.getRange(15, 4).setValue(0);
- }
- //Scholar Rate Comparison
- if(schCompare > 70 && schCompare < 92){
- user.getRange(16, 4).setValue(0);
- }
- if(schCompare >= 92){
- schCompare = (schCompare - 92) * ref.getRange(maxMech+4, 35+correctBoss).getValue();
- user.getRange(16, 4).setValue(schCompare);
- }
- if(schCompare <= 70){
- schCompare = (schCompare - 70) * ref.getRange(maxMech+4, 35+correctBoss).getValue();
- user.getRange(16, 4).setValue(schCompare);
- }
- //Down Comparison
- if(downCompare > 0){
- downCompare = downCompare * ref.getRange(maxMech+5, 35+correctBoss).getValue();
- user.getRange(17, 4).setValue(downCompare);
- }else{
- user.getRange(17, 4).setValue(0);
- }
- }
- }
- //Mechanic and Weighted Mechanic Data
- if(i >= 18){
- mech.getRange(i-15, (correctBoss*8)-6).copyTo(user.getRange(i, 2), {contentsOnly:true});
- mech.getRange(i-15, (correctBoss*8)-5).copyTo(user.getRange(i, 3), {contentsOnly:true});
- weightMech = ref.getRange(i-17, 35+correctBoss).getValue();
- valueToChange = user.getRange(i, 3).getValue();
- user.getRange(i, 4).setValue(weightMech*valueToChange);
- }
- }
- }
- //IF THE CURRENTLY ACTIVE SHEET IS "INFO"
- if(wsActive == "Info"){
- //Storage Variables
- var naCount = 0;
- var wipCount = 0;
- var gearCount = 0;
- var profCount = 0;
- //Getting your Proficiencies Total
- for(var i=5; i<=buildCount+4; i++){
- switch(build.getRange(i, 3).getValue()){
- case "N/A":
- naCount++;
- break;
- case "WIP":
- wipCount++;
- break;
- case "Geared":
- gearCount++;
- break;
- case "Proficient":
- profCount++;
- break;
- }
- }
- //Finding the Correct Build
- for(var i=1; i<=buildCount; i++){
- correctBuild = ref.getRange(i, 1).getValue();
- if(correctBuild == info.getRange(4, 3).getValue()){
- correctBuild = i;
- break;
- }
- }
- //Clearing Cells
- for(var i=5; i<=10; i++){
- info.getRange(i, 3).clear({contentsOnly: true});
- info.getRange(i, 4).clear({contentsOnly: true});
- }
- //Displaying your Proficiency Totals
- for(var i=5; i<=8; i++){
- switch(i){
- case 5:
- info.getRange(i, 3).setValue(naCount);
- break;
- case 6:
- info.getRange(i, 3).setValue(wipCount);
- break;
- case 7:
- info.getRange(i, 3).setValue(gearCount);
- break;
- case 8:
- info.getRange(i, 3).setValue(profCount);
- break;
- }
- }
- //Displaying a Build's Description
- ref.getRange(correctBuild, 20).copyTo(info.getRange(9, 3), {contentsOnly: true});
- //Displaying a Build's Difficulty
- ref.getRange(correctBuild, 21).copyTo(info.getRange(10, 3), {contentsOnly: true});
- }
- if(wsActive == "Leaderboards"){
- }
- }
- //Overwrites new (user input) data with existing data
- function userEditing(){
- //List of variables
- var ws = SpreadsheetApp.getActiveSpreadsheet();
- var user = ws.getSheets()[4];
- var build = ws.getSheets()[1];
- var ref = ws.getSheets()[0];
- var buildList = ref.getRange("A:A");
- var correctBuild = 0;
- var buildCount = 0;
- //Determining the max amount of Builds there are
- for(var i=1; i<=1000; i++){
- if(ref.getRange(i, 1).isBlank() != true){
- buildCount++;
- }else{
- break;
- }
- }
- //Overwriting Data
- for(var i=1; i<=buildCount; i++){
- var currentBuild = ref.getRange(i, 1).getValue();
- if(currentBuild == user.getRange(3, 3).getValue()){
- correctBuild = i;
- for(var j=4; j<=9; j++){
- if(user.getRange(j, 4).getValue() != ""){
- if(j < 8){
- user.getRange(j, 4).copyTo(build.getRange(i+4, j-1), {contentsOnly:true});
- }else if(j = 9){
- user.getRange(j, 4).copyTo(build.getRange(i+4, j-2), {contentsOnly:true});
- break;
- }
- }
- }
- }
- }
- //Displaying Data & Clearing Data
- for(var i=4; i<=9; i++){
- if(i < 8){
- build.getRange(correctBuild+4, i-1).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }else if(i == 9){
- build.getRange(correctBuild+4, i-2).copyTo(user.getRange(i, 3), {contentsOnly:true});
- }
- user.getRange(i, 4).clear({contentsOnly:true});
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement