Advertisement
iROOT

Скрипт для автообновления таблицы со статистикой

Feb 28th, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var dict = {
  2.   data: {
  3.     nickName: "Ник",
  4.     effRating: "Рейтинг эффективности",
  5.     karma: "Карма",
  6.     prestigeBonus: "Мощь флота",
  7.     effRating: "Рейтинг",
  8.     uid: "UID",
  9.     pvp: {
  10.       gamePlayed: "Боев",
  11.       gameWin: "Побед",
  12.       totalAssists: "Помощи",
  13.       totalBattleTime: "Время в бою",
  14.       totalDeath: "Смертей",
  15.       totalDmgDone: "Урона",
  16.       totalHealingDone: "Восстановлено",
  17.       totalKill: "Убийств",
  18.       totalVpDmgDone: "Очков захвата",
  19.     },
  20.     clan:{
  21.       name: "Название корпорации",
  22.       tag: "Тег корпорации"
  23.     }
  24.   }
  25. }
  26.  
  27. function getHeader(self) {
  28.   var totalBattleTime = self.data.pvp.totalBattleTime;
  29.   /*var ms = totalBattleTime % 1000;
  30.   var s = (totalBattleTime / 1000) % 60;
  31.   var m = ((totalBattleTime / 1000) / 60) % 60;
  32.   var h = (((totalBattleTime / 1000) / 60) / 60) % 24;
  33.   var d = (((totalBattleTime / 1000) / 60) / 60) / 24;*/
  34.  
  35.   return [
  36.     self.data.uid,
  37.     self.data.clan === undefined ? '' : self.data.clan.name + ' [' + self.data.clan.tag + ']',
  38.     self.data.karma === undefined ? 0 : self.data.karma,
  39.     self.data.prestigeBonus === undefined ? 0 : Math.floor(self.data.prestigeBonus * 100),
  40.     self.data.pvp.totalKill,
  41.     self.data.pvp.totalDeath,
  42.     self.data.pvp.totalAssists,
  43.     self.data.pvp.gamePlayed,
  44.     self.data.pvp.gameWin,
  45.     '=CONCATENATE(TEXT(ROUNDDOWN(((('+totalBattleTime.toString()+'/1000)/60)/60)/24);"00");" ";TEXT(ROUNDDOWN(MOD(((('+totalBattleTime.toString()+'/1000)/60)/60);24));"00");":";TEXT(ROUNDDOWN(MOD((('+totalBattleTime.toString()+'/1000)/60);60));"00");":";TEXT(ROUNDDOWN(MOD(('+totalBattleTime.toString()+'/1000);60));"00"))',
  46.     //Math.floor(d.toString())+' дн. '+Math.floor(h.toString())+' ч. '+Math.floor(m.toString())+' мин. '+Math.floor(s.toString())+' сек.',
  47.     '=CONCATENATE(TEXT(ROUNDDOWN(MOD((('+Math.floor((totalBattleTime/self.data.pvp.gamePlayed)).toString()+'/1000)/60);60));"0");":";TEXT(ROUNDDOWN(MOD(('+Math.floor((totalBattleTime/self.data.pvp.gamePlayed)).toString()+'/1000);60));"00"))',
  48.     self.data.pvp.totalDmgDone,
  49.     self.data.pvp.totalHealingDone,
  50.     self.data.pvp.totalVpDmgDone,
  51.     ((self.data.effRating) ? self.data.effRating : 500),
  52.   ];
  53. };
  54.  
  55. function updateDate(sheet) {
  56.   for (var i = 2; i <= sheet.getLastRow()-4; i++) {
  57.     var nickName = sheet.getRange(i,1).getValue();
  58.    
  59.     var response = UrlFetchApp.fetch("http://gmt.star-conflict.com/pubapi/v1/userinfo.php?nickname="+nickName);
  60.     var json = response.getContentText();
  61.     try {
  62.       var stat = JSON.parse(json);
  63.     } catch (e) {
  64.       Logger.log('Error type: '+e.name+', nickname: ',+nickName)
  65.       continue;
  66.     };
  67.    
  68.     if (stat.result !== "ok" || stat.code !== 0) {
  69.       continue;
  70.     };
  71.     try {
  72.       var header = getHeader(stat);
  73.     } catch(e) {
  74.       continue;
  75.     };
  76.    
  77.     var j = 2;
  78.     for (var key in header) {
  79.       sheet.getRange(i,j).setValue(header[key]);
  80.       j++;
  81.     };
  82.   };
  83. };
  84.  
  85. function updateDataProtection() {
  86.   var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  87.   var sheet = sheets[0]
  88.   var protection = sheet.protect();
  89.   try {
  90.     updateDate(sheet);
  91.   } finally {
  92.     protection.remove();
  93.   };
  94. };
  95.  
  96. function onOpen() {
  97.   var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  98.   var entries = [{
  99.     name : "Обновить данные",
  100.     functionName : "updateDataProtection"
  101.   }];
  102.   spreadsheet.addMenu("Статистика", entries);
  103. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement