Code:
//Some very cleaned up, but poorly executing code
function getAPI(toonName,toonRealm) {
var cache = CacheService.getDocumentCache();
var value = cache.get(toonName+"-"+toonRealm);
if (value == null) {
for (var n = 0; n < 6; n++) {
try {
var toonJSON = UrlFetchApp.fetch("https://us.api.battle.net/wow/character/"+toonRealm+"/"+toonName+"?fields=items,statistics,progression,audit&apikey=YOUR_API_KEY_HERE");
if (toonJSON.getResponseCode() === 200) {
value = JSON.parse(toonJSON.getContentText());
cache.put(toonName+"-"+toonRealm, value, 10800);
}
} catch (err) {
if (n == 5) {
throw err;
}
Utilities.sleep((Math.pow(2,n)*1000) + (Math.round(Math.random() * 1000)));
}
}
}
return value;
}
function pull(toonName,toonRealm) {
if(!toonName || !toonRealm) {
return ""
}
var toon;
for (var n = 0; n < 6; n++) {
try {
var toonJSON = UrlFetchApp.fetch("https://us.api.battle.net/wow/character/"+toonRealm+"/"+toonName+"?fields=items,statistics,progression,audit&apikey=YOUR_API_KEY_HERE");
if (toonJSON.getResponseCode() === 200) {
toon = JSON.parse(toonJSON.getContentText());
}
} catch (err) {
if (n == 5) {
throw err;
}
Utilities.sleep((Math.pow(2,n)*1000) + (Math.round(Math.random() * 1000)));
}
}
var wodstats = toon.statistics.subCategories[5].subCategories[5].statistics
var bosskills = 0
for (var i = 1; i <= 15; i+=2){
bosskills += wodstats[i].quantity
}
var grgemindex = [115809, 115811, 115812, 115813, 115814, 115815],
gemindex = [115803, 115804, 115805, 115806, 115807, 115808],
gem75index = [127760, 127761, 127762, 127763, 127764, 127765],
gems75 = 0,
grgems = 0,
gems = 0
var getItem = function(item){
var itemlevel = 0,
itemlevelcm = 0
if (item) {
itemlevel = item.itemLevel,
itemlevelcm = itemlevel
if (itemlevel > 630) { var itemlevelcm = 630 }
if (gem75index.indexOf(item.tooltipParams["gem0"]) > -1) {
gems75++
} else if (grgemindex.indexOf(item.tooltipParams["gem0"]) > -1) {
grgems++
} else if (gemindex.indexOf(item.tooltipParams["gem0"]) > -1) {
gems++
}
}
return [itemlevel, itemlevelcm]
}
var head = getItem(toon.items.head),
neck = getItem(toon.items.neck),
shoulders = getItem(toon.items.shoulder),
back = getItem(toon.items.back),
chest = getItem(toon.items.chest),
wrist = getItem(toon.items.wrist),
hands = getItem(toon.items.hands),
waist = getItem(toon.items.waist),
legs = getItem(toon.items.legs),
feet = getItem(toon.items.feet),
finger1 = getItem(toon.items.finger1),
finger2 = getItem(toon.items.finger2),
trinket1 = getItem(toon.items.trinket1),
trinket2 = getItem(toon.items.trinket2),
mainHand = getItem(toon.items.mainHand),
offHand = getItem(toon.items.offHand)
var CM_iL_Total = head[1]+neck[1]+shoulders[1]+back[1]+chest[1]+wrist[1]+hands[1]+waist[1]+legs[1]+feet[1]+finger1[1]+finger2[1]+trinket1[1]+trinket2[1]+mainHand[1]+offHand[1]
var CM_iL = CM_iL_Total / 16 //Kept this portion of code for future expansions
if (offHand[1] == 0) { CM_iL = CM_iL_Total / 15 }
var killsforRaidId = function(raid_id){
var normal = 0,
heroic = 0,
mythic = 0;
toon.progression.raids[raid_id].bosses.forEach(function(boss){
normal += boss.normalKills
heroic += boss.heroicKills
mythic += boss.mythicKills
})
return [normal, heroic, mythic]
}
var highmaul = killsforRaidId(32),
highmaulNormal = highmaul[0],
highmaulHeroic = highmaul[1],
highmaulMythic = highmaul[2]
var brf = killsforRaidId(33),
brfNormal = brf[0],
brfHeroic = brf[1],
brfMythic = brf[2]
var hfc = killsforRaidId(34),
hfcNormal = hfc[0],
hfcHeroic = hfc[1],
hfcMythic = hfc[2]
var giftindex = [5310, 5317, 5311, 5324, 5318, 5325, 5312, 5319, 5326, 5313, 5320, 5327, 5314, 5321, 5328],
breathindex = [5281, 5285, 5284, 5298, 5292, 5297, 5300, 5293, 5299, 5302, 5294, 5301, 5304, 5295, 5303]
var enchantsByItem = function(item) {
if (item) {
var enchant
if (giftindex.indexOf(item.tooltipParams["enchant"]) > -1) {
enchant = "Gift"
} else if (breathindex.indexOf(item.tooltipParams["enchant"]) > -1) {
enchant = "Breath"
} else {
enchant = "None"
}
}
else { enchant = "N/A" }
return enchant
}
var neckchant = enchantsByItem(toon.items.neck),
backchant = enchantsByItem(toon.items.back),
finger1chant = enchantsByItem(toon.items.finger1),
finger2chant = enchantsByItem(toon.items.finger2)
var getWeaponEnchant = function(enchantid) {
if (toon.class == 6 && enchantid) {return "DK"}
switch (enchantid) {
case 5336:
return "Blackrock"
break;
case 5335:
return "Shadowmoon"
break;
case 5334:
return "Frostwolf"
break;
case 5331:
return "Shattered Hand"
break;
case 5276:
return "Megawatt"
break;
case 5275:
return "Oglethorp's"
break;
case 5383:
return "Hemet's"
break;
case 5330:
return "Thunderlord"
break;
case 5337:
return "Warsong"
break;
case 5384:
return "Bleeding Hollow"
break;
default:
return "None"
}
}
var wepchant,
wepchantoh
if (toon.items.mainHand) {
wepchant = getWeaponEnchant(toon.items.mainHand.tooltipParams["enchant"])
} else { wepchant = "N/A" }
if (toon.items.offHand && toon.items.offHand.weaponInfo) {
wepchantoh = getWeaponEnchant(toon.items.offHand.tooltipParams["enchant"])
}
var currentdate = new Date()
var lastupdate = (currentdate.getMonth()+1) + "/"
+ currentdate.getDate() + "/"
+ currentdate.getFullYear() + " @ "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds() + " GMT"
var T18Sets = ["Arcanic Conclave",
"Oathclaw",
"Pious",
"Reathrattle",
"Demongaze",
"Ceaseless Vigil",
"Iron Wrath",
"Felblade",
"Hurricane's Eye",
"Living Mountain", // TECTUS
"Savage Hunt"]
var setPiece = function(slot) {
var setsT18 = 0,
setsT17 = 0
if (slot.tooltipParams.set && (slot.itemLevel == 695 || slot.itemLevel == 710 || slot.itemLevel == 725 || slot.itemLevel == 701 || slot.itemLevel == 716 || slot.itemLevel == 731 || slot.itemLevel == 705 || slot.itemLevel == 720 || slot.itemLevel == 735 || slot.itemLevel == 711 || slot.itemLevel == 726 || slot.itemLevel == 741)) { //T18
setsT18 = slot.tooltipParams.set.length
}
else if (slot.tooltipParams.set && (slot.itemLevel == 670 || slot.itemLevel == 685 || slot.itemLevel == 700 || slot.itemLevel == 676 || slot.itemLevel == 691 || slot.itemLevel == 706)) { //T17
setsT17 = slot.tooltipParams.set.length
}
return [setsT18, setsT17]
}
var tierHead = setPiece(toon.items.head),
tierShoulder = setPiece(toon.items.shoulder),
tierChest = setPiece(toon.items.chest),
tierHands = setPiece(toon.items.hands),
tierLegs = setPiece(toon.items.legs)
var tier18pieces = Math.max(tierHead[0], tierShoulder[0], tierChest[0], tierHands[0], tierLegs[0]),
tier17pieces = Math.max(tierHead[1], tierShoulder[1], tierChest[1], tierHands[1], tierLegs[1])
var toonInfo = new Array(
toon.items.averageItemLevelEquipped, tier18pieces+"/"+tier17pieces,
head[0], neck[0],
shoulders[0], back[0],
chest[0], wrist[0],
hands[0], waist[0],
legs[0], feet[0],
finger1[0], finger2[0],
trinket1[0],trinket2[0],
mainHand[0], offHand[0],
wepchant, wepchantoh, neckchant, finger1chant, finger2chant, backchant,
toon.audit.emptySockets, gems, grgems, gems75,
hfcNormal, hfcHeroic, hfcMythic,
lastupdate
)
return toonInfo;
}