View
Theme
Font Style
7pt
8pt
9pt
10pt
11pt
Line Style
100%
110%
120%
130%
140%
Bold Keyword
Default
Inspector
Kkaefer
Eclipse
SQ Light
Lesser
Dark
Cobalt
Monokai
Rubyblue
Night
SQ Dark
Ambiance
Blackboard
Line Num.
Wrap Lines
Preview
Redraw
JS Tab
HTML Tab
CSS Tab
Live Tab
Prev. Tab
Next Tab
Browser
History…
Help
Edit
Settings
Auto Complete
Match Brackets
Match Highlight
Strip Whitespace
Auto Close Brackets
Auto Close Quotes
Show Print Margin
Undo
Redo
Delete
Select Line
Select All
Find & Replace
Find
Find in Repo.
Find Next
Find Previous
Replace Single
Replace All
Wrap Search
Revert
As Template
Diff Revision
Format
Compress
Text
Zen Coding
Indent
Tab Width
1
2
3
4
5
6
7
8
Indent Unit
1
2
3
4
5
6
7
8
Smart Indent
Use Tabs
Visible Tabs
Shift Left
Shift Right
Put Indent
Number
Increment by 1
Decrement by 1
Increment by 0.1
Decrement by 0.1
Increment by 10
Decrement by 10
Simple Math
Comment
Line
Move Up
Move Down
Copy Up
Copy Down
Go to Line…
Remove Line
Next Point
Prev. Point
Help
Share
Login
You can jump to the latest bin by adding
/latest
to your URL
×
z
Find
→
←
⟲
Replace
⊗
All
Replace
function reload_() { var characters = getCharacterList_(true); var weapons = getWeaponList_(true); getExploreList_(null,true); getPoolList_(characters.lookup,true); getSkillDetails_(characters,weapons,true); return ContentService.createTextOutput('"DONE"').setMimeType(ContentService.MimeType.JSON); } function logCard_(cJson,characters) { Logger.log('logCard'); if (cJson === '(dupkey)') return; switch (cJson.name) { case 'RZ-XV': cJson.name = 'RZ-XIII'; break; case 'しょこたん': cJson.name = '中川しようこ'; break; } var name = cJson.name, name1 = name.split(/[・・ ]/)[0], chs = [], cl = getClassFromId_(cJson.WeaponType)||'剣', //pcardId = cJson.talkEventName0.replace(/^talk_town_|_1$/g,''), gender = /^1/.test(String(cJson.cardId)) ? 'M' : 'F', prev = cJson.prevCardId?1:0, type = getTypeFromId_(cJson.tribeType1), type2 = getTypeFromId_(cJson.tribeType2), pe = getPeFromId_(cJson.personalityId); for (var c = 0; c < characters.length; c++) { var ch = characters[c]; if (cJson.cardId == 10100000) { if (ch.dbId == 1) { chs.push(ch); break; } } else if (cJson.cardId == 10101560) { if (ch.dbId == 163) { chs.push(ch); break; } } else if (ch.name.split(/[・・ ]/)[0].split('(')[0] == name1 && ch.class == cl && (ch.prev?1:0) == prev) { chs.push(ch); } } if (!chs.length) { Logger.log("notfound="+name1); return ContentService.createTextOutput(JSON.stringify({error:'notfound',json:cJson,name:name1,weapon:getClassFromId_(cJson.WeaponType)})).setMimeType(ContentService.MimeType.JSON); //return; } if (chs.length>1 && cJson.desc) { var newChs = []; for (var c = 0; c < chs.length; c++) { var ch = chs[c]; if (ch.desc && cJson.desc.replace(/\n/g,'') == ch.desc.replace(/\n/g,'')) newChs.push(ch); } if (newChs.length == 1) chs = newChs; } if (chs.length>1) { //if (name1 == 'メア' || name1 == 'ハルカ' || name1 == 'ミラ' || name1 == 'イリア' || name1 == 'アマーリエ' || name1 == 'アンナ' || name1 == 'スピカ' || name1 == 'クライヴ') return 'continue'; return ContentService.createTextOutput(JSON.stringify({error:'duplicated',json:cJson,name:name1,weapon:getClassFromId_(cJson.WeaponType),chs:chs})).setMimeType(ContentService.MimeType.JSON); } var character = chs[0]; if (!character.cardid) { character.cardid = cJson.cardId; } else if (character.cardid != cJson.cardId && cJson.level == 100) { character.cardid = cJson.cardId; //return ContentService.createTextOutput(JSON.stringify({error:'cardid-'+cJson.cardId,json:json,ch:character})).setMimeType(ContentService.MimeType.JSON); } if (!character.gender) { character.gender = gender; } else if (character.gender != gender) { character.gender = gender; } if (cJson.cvName) { if (!character.cvname) { character.cvname = cJson.cvName; } else if (character.cvname != cJson.cvName) { character.cvname = cJson.cvName; } } if (cJson.cardId == 10100000) { character.name = '主人公'; } else if (cJson.cardId == 10101560) { character.name = '(ネタバレあり)'; } else if (character.name != cJson.name && cJson.lv == 100) { character.name = cJson.name; } if (cJson.desc) { if (!character.desc) { character.desc = cJson.desc; } else if (character.desc != cJson.desc && cJson.lv == 100) { character.desc = cJson.desc; } } if (cJson.preName) { if (cJson.cardId == 10100000 || cJson.cardId == 10101560) { character.nick = null; } else if (!character.nick) { character.nick = cJson.preName; } else if (character.nick != cJson.preName && cJson.lv == 100) { character.nick = cJson.preName; } } if (!character.type) { character.type = type; } else if (character.type != type && cJson.lv == 100) { character.type = type; } if (!character.type2) { character.type2 = type2; } else if (character.type2 != type2 && cJson.lv == 100) { character.type2 = type2; } if (!character.pe) { character.pe = pe; } else if (character.pe != pe) { character.pe = pe; } if (cJson.lsDesc) { if (!character.leader) { character.leader = cJson.lsDesc; } else if (character.leader != cJson.lsDesc && cJson.lv == 100) { character.leader = cJson.lsDesc; } } if (cJson.asSp1) { if (!character.assp1) { character.assp1 = cJson.asSp1; } else if (character.assp1 != cJson.asSp1) { character.assp1 = cJson.asSp1; } } if (cJson.asSp2) { if (!character.assp2) { character.assp2 = cJson.asSp2; } else if (character.assp2 != cJson.asSp2) { character.assp2 = cJson.asSp2; } } if (cJson.asName1) { if (!character.asName1) { character.asName1 = cJson.asName1; } else if (character.asName1 != cJson.asName1 && cJson.lv == 100) { character.asName1 = cJson.asName1; } } if (cJson.asName2) { if (!character.asName2) { character.asName2 = cJson.asName2; } else if (character.asName2 != cJson.asName1 && cJson.lv == 100) { character.asName2 = cJson.asName2; } } if (cJson.asDesc1) { if (!character.asDesc1) { character.asDesc1 = cJson.asDesc1; } else if (character.asDesc1 != cJson.asDesc1 && cJson.lv == 100) { character.asDesc1 = cJson.asDesc1; } } if (cJson.asDesc2) { if (!character.asDesc2) { character.asDesc2 = cJson.asDesc2; } else if (character.asDesc2 != cJson.asDesc2 && cJson.lv == 100) { character.asDesc2 = cJson.asDesc2; } } if (!character.passiveList) character.passiveList = []; if (cJson.ps1Name) { if (!character.passiveList[0]) { character.passiveList[0] = cJson.ps1Name; } else if (character.passiveList[0] != cJson.ps1Name && cJson.lv == 100) { character.passiveList[0] = cJson.ps1Name; } } if (cJson.ps2Name) { if (!character.passiveList[1]) { character.passiveList[1] = cJson.ps2Name; } else if (character.passiveList[1] != cJson.ps2Name && cJson.lv == 100) { character.passiveList[1] = cJson.ps2Name; } } if (cJson.ps3Name) { if (!character.passiveList[2]) { character.passiveList[2] = cJson.ps3Name; } else if (character.passiveList[2] != cJson.ps3Name && cJson.lv == 100) { character.passiveList[2] = cJson.ps3Name; } } if (!character.hpval) { character.hpval = cJson.hp; } else if (character.hpval != cJson.hp && cJson.lv == 100) { character.hpval = cJson.hp; } if (!character.spval) { character.spval = cJson.sp; } else if (character.spval != cJson.sp && cJson.lv == 100) { character.spval = cJson.sp; } if (!character.atkval) { character.atkval = cJson.atk; } else if (character.atkval != cJson.atk && cJson.lv == 100) { character.atkval = cJson.atk; } if (!character.atkval) { character.atkval = cJson.atk; } else if (character.atkval != cJson.atk && cJson.lv == 100) { character.atkval = cJson.atk; } if (!character.defval) { character.defval = cJson.def; } else if (character.defval != cJson.def && cJson.lv == 100) { character.defval = cJson.def; } if (!character.agival) { character.agival = cJson.hit; } else if (character.agival != cJson.hit && cJson.lv == 100) { character.agival = cJson.hit; } if (!character.hitval) { character.hitval = cJson.agi; } else if (character.hitval != cJson.agi && cJson.lv == 100) { character.hitval = cJson.agi; } } function logWeapon_(wJson,weapons) { Logger.log('logWeapon'); if (wJson === '(dupkey)') return; var wcl = getClassFromId_(wJson.WeaponType); if (wJson && wJson.evolve < 0 && wJson.level == wJson.levelMax && wJson.name != '至高の叡智の杖・改') { var wps = []; for (var w = 0; w < weapons.length; w++) { var wp = weapons[w]; if (wp.name == wJson.name && wp.class == wcl) { wps.push(wp); } } if (!wps.length) { return ContentService.createTextOutput(JSON.stringify({error:'notfound',json:wJson})).setMimeType(ContentService.MimeType.JSON); } if (wps.length>1) { return ContentService.createTextOutput(JSON.stringify({error:'duplicated',json:wJson,wps:wps})).setMimeType(ContentService.MimeType.JSON); } var weapon = wps[0]; if (!weapon.passiveList) weapon.passiveList = []; if (!weapon.rare) { weapon.rare = wJson.rar; } else if (weapon.rare != wJson.rar) { weapon.rare = wJson.rar; } if (!weapon.atkval) { weapon.atkval = wJson.atk; } else if (weapon.atkval != wJson.atk) { weapon.atkval = wJson.atk; } if (!weapon.defval) { weapon.defval = wJson.def; } else if (weapon.defval != wJson.def) { weapon.defval = wJson.def; } if (!weapon.agival) { weapon.agival = wJson.hit; } else if (weapon.agival != wJson.hit) { weapon.agival = wJson.hit; } if (!weapon.hitval) { weapon.hitval = wJson.agi; } else if (weapon.hitval != wJson.agi) { weapon.hitval = wJson.agi; } if (!weapon.level) { weapon.lv = wJson.level; } else if (weapon.lv != wJson.level) { weapon.lv = wJson.level; } if (!weapon.spval) { weapon.spval = wJson.wsSp1; } else if (weapon.spval != wJson.wsSp1) { weapon.spval = wJson.wsSp1; } if (!weapon.element) { weapon.element = getElementFromId_(wJson.elem)+(wJson.elemAtk||''); } else if (weapon.element != getElementFromId_(wJson.elem)+(wJson.elemAtk||'')) { weapon.element = getElementFromId_(wJson.elem)+(wJson.elemAtk||''); } if (!weapon.knockBack) { weapon.knockBack = wJson.knockBack; } else if (weapon.knockBack != wJson.knockBack) { weapon.knockBack = wJson.knockBack; } if (!weapon.faint) { weapon.faint = wJson.faint; } else if (weapon.faint != wJson.faint) { weapon.faint = wJson.faint; } if (!weapon.effect) { weapon.effect = getEffectFromId_(wJson.stat)+(wJson.stat ? 'Lv'+(wJson.statLv||'') : ''); } else if (weapon.effect != getEffectFromId_(wJson.stat)+(wJson.stat ? 'Lv'+(wJson.statLv||'') : '')) { weapon.effect = getEffectFromId_(wJson.stat)+(wJson.stat ? 'Lv'+(wJson.statLv||'') : ''); } if (!weapon.statGain) { weapon.statGain = wJson.statGain; } else if (weapon.statGain != wJson.statGain) { weapon.statGain = wJson.statGain; } if (!weapon.statVal1) { weapon.statVal1 = wJson.statVal1; } else if (weapon.statVal1 != wJson.statVal1) { weapon.statVal1 = wJson.statVal1; } if (!weapon.statVal2) { weapon.statVal2 = wJson.statVal2; } else if (weapon.statVal2 != wJson.statVal2) { weapon.statVal2 = wJson.statVal2; } if (wJson.wsName1) { if (!weapon.passiveList[0]) { weapon.passiveList[0] = wJson.wsName1; } else if (weapon.passiveList[0] != wJson.wsName1) { weapon.passiveList[0] = wJson.wsName1; } } else { delete weapon.passiveList[0]; } if (wJson.wsName2) { if (!weapon.passiveList[1]) { weapon.passiveList[1] = wJson.wsName2; } else if (weapon.passiveList[1] != wJson.wsName2) { weapon.passiveList[1] = wJson.wsName2; } } else { delete weapon.passiveList[1]; } if (wJson.wsName3) { if (!weapon.passiveList[2]) { weapon.passiveList[2] = wJson.wsName3; } else if (weapon.passiveList[2] != wJson.wsName3) { weapon.passiveList[2] = wJson.wsName3; } } else { delete weapon.passiveList[2]; } if (wJson.wsName4) { if (!weapon.passiveList[3]) { weapon.passiveList[3] = wJson.wsName4; } else if (weapon.passiveList[3] != wJson.wsName4) { weapon.passiveList[3] = wJson.wsName4; } } else { delete weapon.passiveList[3]; } if (weapon.passiveList.length > 4) weapon.passiveList.length = 4; if (wJson.wsType1 != 1) { weapon.passiveList.splice(0, 0, ''); weapon.skill = null; } else if (wJson.wsDesc1) { if (!weapon.skill) { weapon.skill = wJson.wsDesc1; } else if (weapon.skill != wJson.wsDesc1) { weapon.skill = wJson.wsDesc1; } } var wLen = weapon.passiveList.length; for (var w = weapon.passiveList.length - 1; w >= 0; w--) { if (weapon.passiveList[w]) break; wLen = w; } weapon.passiveList.length = wLen; } } function logItem_(json, items) { Logger.log('logItem'); if (json === '(dupkey)') return; var iId = json.iId; delete json.iId; items[iId] = json; } function logAccessory_(json, accessories) { Logger.log('logAccessory'); if (json === '(dupkey)') return; var aId = json.aId; delete json.aId; accessories[aId] = json; } function LogAction_(json, actions) { Logger.log('LogAction'); if (json === '(dupkey)') return; var skillId = json.skillId == 'attacks' ? 'attacks1' : json.skillId; delete json.skillId; actions[skillId] = json; } function logAttack_(json, attacks) { Logger.log('logAttack'); if (json === '(dupkey)') return; var attackId = json.attackId; delete json.attackId; attacks[attackId] = json; } function logMonster_(json, monsters) { Logger.log('logMonster'); if (json === '(dupkey)') return; var id = json.id; delete json.id; monsters[id] = json; } function logBuilding_(buildingModels, buildingNums, buildingUnions, buildings, items) { Logger.log('logBuilding'); if (buildingModels === '(dupkey)') return; var buildingLookup = {}, types = getTypes_(), classes = getClasses_(); for (var bId in buildingModels) { var json = buildingModels[bId], add = false, info = [], found = false, prefixes = [], buildingNum = buildingNums[bId]||[], buildingUnion = buildingUnions[bId]; buildingNum.sort(function(a,b){return a.bLevel>b.bLevel?-1: a.bLevel
1) lvJson.level = buildingNum[k].level; break; } lvJson.time = lv.time; if (lv.money) { lvJson.goldneed = lv.money; } if (lv.crystal) { lvJson.crystalneed = lv.crystal; } if (lv.itemInfo) { for (var f = 0; f < lv.itemInfo.length; f++) { //lv.itemInfo[f] lvJson[lv.itemInfo[f].name] = lv.itemInfo[f].num; } } if (lv.addMoney) { lvJson.gold = lv.addMoney; add = true; delete json.gold; } if (lv.addMoneyMax) { lvJson.gmax = lv.addMoneyMax; add = true; delete json.gmax; } if (lv.addSoul) { lvJson.soul = lv.addSoul; add = true; delete json.soul; } if (lv.followUp) { lvJson.follow = lv.followUp; add = true; delete json.follow; } if (lv.loveUp) { lvJson.love = lv.loveUp; add = true; delete json.love; } if (lv.costUp) { lvJson.cost = lv.costUp; add = true; delete json.cost; } if (lv.weaponUp) { lvJson.weapon = lv.weaponUp; add = true; delete json.weapon; } if (!prefixes.length) prefixes.push(''); for (var p = 0; p < prefixes.length; p++ ){ if (lv.hpUp) { lvJson[prefixes[p]+'hp'] = lv.hpUp; add = true; delete json[prefixes[p]+'hp']; } if (lv.spUp) { lvJson[prefixes[p]+'sp'] = lv.spUp; add = true; delete json[prefixes[p]+'sp']; } if (lv.atkUp) { lvJson[prefixes[p]+'atk'] = lv.atkUp; add = true; delete json[prefixes[p]+'atk']; } if (lv.defUp) { lvJson[prefixes[p]+'def'] = lv.defUp; add = true; delete json[prefixes[p]+'def']; } if (lv.hitUp) { lvJson[prefixes[p]+'agi'] = lv.hitUp; add = true; delete json[prefixes[p]+'agi']; } if (lv.agiUp) { lvJson[prefixes[p]+'hit'] = lv.agiUp; add = true; delete json[prefixes[p]+'hit']; } } info.splice(0,0,lvJson); } } for (var b = 0; b < buildings.length; b++) { var building = buildings[b]; if (building.name == json.name) { buildingLookup[bId] = building; delete building.notmax; found = true; break; } } if (!found && (add||bId == '0')) { var building = { id: 1+buildings.length, grp: bId == '0'?0:5, name: json.name,limit:1 }; buildings.push(building); buildingLookup[bId] = building; } if (buildingLookup[bId]) { var building = buildingLookup[bId]; //building.id = parseInt(bId); building.w = json.gridX; building.h = json.gridZ; building.description = json.description; building.i = info; if (building.i[0]) { for (var stats in building.i[0]) { if (!/^(?:|剣|拳|斧|槍|弓|魔|双|竜|H-|A-|D-|B-|T-|S-|P-|主|ダ|な|ふ|ソ)(?:hp|sp|atk|def|agi|hit)$/.test(stats)) continue; delete building[stats]; //building[stats] = building.i[0][stats]; } } if (buildingUnion) { building.union = {build:{},item:{}}; for (var u = 0; u < buildingUnion.length; u++) { for (var stats in buildingUnion[u]) { switch (stats) { case 'build': for (var ub = 0; ub < buildingUnion[u].build.length; ub++) { var building1 = buildingLookup[buildingUnion[u].build[ub].id]; if (!building1) { return ContentService.createTextOutput(JSON.stringify({error:'union building not found ' + buildingUnion[u].build[ub].id})).setMimeType(ContentService.MimeType.JSON); } building1.replace = [parseInt(building.id)]; building.union.build[building1.id] = buildingUnion[u].build[ub].num; } break; case 'item': for (var ub = 0; ub < buildingUnion[u].item.length; ub++) { var item = items[buildingUnion[u].item[ub].id]; if (!item) { return ContentService.createTextOutput(JSON.stringify({error:'union item not found ' + buildingUnion[u].item[ub].id,building:building})).setMimeType(ContentService.MimeType.JSON); } building.union.item[item.name] = buildingUnion[u].item[ub].num; } break; case 'money': building.union.item.goldneed = buildingUnion[u][stats]; break; case 'crystal': building.union.item.crystalneed = buildingUnion[u][stats]; break; default: building.union[stats] = buildingUnion[u][stats]; break; } } } } } } } function logQuest_(json, quests) { Logger.log('logQuest'); if (json === '(dupkey)') return; if (!quests[json.q.questId]) quests[json.q.questId] = []; var qJson = {}; for (var field in json.q) { switch (field) { case 'name': break; default: qJson[field] = json.q[field]; break; } } var jsonText = JSON.stringify(qJson); for (var q1 = 0; q1 < quests[json.q.questId].length; q1++) { if (JSON.stringify(quests[json.q.questId][q1]) == jsonText) { return; } } quests[json.q.questId].push(qJson); } function logStage_(json, stages) { Logger.log('logStage'); if (json === '(dupkey)') return; if (stages[json.stageId]) return; var qJson = {}; for (var field in json) { switch (field) { case 'stageId': break; case 'stageEnemies': case 'stageEnemyParams': case 'stageTreasures': var jAry = []; for (var s = 0; s < json[field].length; s++) { var jObj = {}; for (var key in json[field][s]) { if (json[field][s][key]) jObj[key] = json[field][s][key]; } jAry.push(jObj); } qJson[field] = jAry; break; default: if (json[field]) qJson[field] = json[field]; break; } } stages[json.stageId] = qJson; } function logQuestGenerate_(json, questGenerates, quests, actions, attacks, monsters, stages) { Logger.log('logQuestGenerate'); if (json === '(dupkey)') return; if (questGenerates[json.qt]) return; var qJson = {}; for (var field in json) { switch (field) { case 'qt': break; case 'stageDatas': var stageIds = []; if (json.stageDatas) { for (var i = 0; i < json.stageDatas.length; i++) { logStage_(json.stageDatas[i], stages); stageIds.push(json.stageDatas[i].stageId); } } qJson[field] = stageIds; break; case 'monsters': if (json.monsters) { for (var i = 0; i < json.monsters.length; i++) { logMonster_(json.monsters[i], monsters); } } break; case 'actionSkills': if (json.actionSkills) { for (var i = 0; i < json.actionSkills.length; i++) { LogAction_(json.actionSkills[i], actions); } } break; case 'attacks': if (json.attacks) { for (var i = 0; i < json.attacks.length; i++) { logAttack_(json.attacks[i], actions); } } break; case 'handicap': case 'tips': var fieldObj = {} for (var fieldKey in json[field]) { if (json[field][fieldKey]) fieldObj[fieldKey] = json[field][fieldKey]; } qJson[field] = fieldObj; break; case 'playerAddParams': case 'userContinueTokens': case 'initPos': break; default: if (json[field]) qJson[field] = json[field]; break; } } questGenerates[json.qt] = qJson; } function logArea_(json, areas, quests, characters, weapons, accessories) { Logger.log('logArea'); if (json === '(dupkey)') return; if (areas[json.areaId]) return; var qJson = {questList:{}}; for (var field in json) { switch (field) { case 'areaId': case 'Pos': case 'Size': case 'eventIconPos': case 'endDate': case 'IsEvent': break; case 'endDateUTC': if (json.endDateUTC && !/^YYYY-/.test(json.endDateUTC)) qJson[field] = json[field]; break; case 'questList': for (var qS in json.questList) { switch (qS) { case 'quests': qJson.questList.quests = []; for (var q1 = 0; q1 < json.questList.quests.length; q1++) { logQuest_(json.questList.quests[q1],quests); qJson.questList.quest.push(json.questList.quests[q1].questId); } break; case 'friends': for (var f1 = 0; f1 < json.questList.friends.length; f1++) { logCard_(json.questList.friends[f1].card,characters); logWeapon_(json.questList.friends[f1].weapon,weapons); logAccessory_(json.questList.friends[f1].accessory,accessories); } break; default: qJson.questList[qS] = json.questList[qS]; break; } } break; default: if (!/^(ignored)/.test(json[field])) qJson[field] = json[field]; break; } } areas[json.areaId] = qJson; } function logCoopMission_(json, coopMissions) { Logger.log('logCoopMission'); if (json === '(dupkey)') return; if (coopMissions[json.locationId]) return; var qJson = {}; for (var field in json) { switch (field) { case 'locationId': break; default: qJson[field] = json[field]; break; } } coopMissions[json.locationId] = qJson; } function logCoopQuest_(json, coopQuests) { Logger.log('logCoopQuest'); if (json === '(dupkey)') return; for (var j = 0; j < json.length; j++) { var jsonJ = json[j]; if (coopQuests[jsonJ.questId]) continue; var qJson = {}; for (var field in jsonJ) { switch (field) { case 'questId': break; default: qJson[field] = jsonJ[field]; break; } } coopQuests[jsonJ.questId] = qJson; } } function reloadFromLog_(sheetName) { var ss = SpreadsheetApp.openById('1IpfNb11KU2O4ctWc3KNZVZaCtBe1ezgBLaig_mWU_9U'); //var sheetName = getParam_(e, "reloadbuilding", ""); var sheet = ss.getSheetByName(sheetName); if (sheet != null) { var characters = getCharacterList_(); var weapons = getWeaponList_(); var actions = getActions_(); var attacks = getAttacks_(); var items = getItems_(); var accessories = getAccessories_(); var monsters = getMonsters_(); var stages = getStages_(); var quests = getQuests_(); var questGenerates = getQuestGenerates_(); var areas = getAreas_(); var coopMissions = getCoopMissions_(); var coopQuests = getCoopQuests_(); var buildings = getBuildings_(); var rows = sheet.getDataRange(); var numRows = rows.getNumRows(); var values = rows.getValues(); var timetableList = tableObj.Event ? (tableObj.Event)||[] : []; var buildingModels = {}, buildingNums = {}, buildingUnions = {}; for (var i=1; i <= numRows -1; i++){ var row =values[i]; if (row[1] == 'QuestModel') { var json = JSON.parse(row[2]); var result = logQuest_(json, quests); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'QuestGenerateModel') { var json = JSON.parse(row[2]); var result = logQuestGenerate_(json, questGenerates, quests, actions, attacks, monsters, stages); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'CoopQuestModel.Misssion') { var json = JSON.parse(row[2]); var result = logCoopMission_(json, coopMissions); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'CoopQuestModel.Quest') { var json = JSON.parse(row[2]); var result = logCoopQuest_(json, coopQuests); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'AreaModel') { var json = JSON.parse(row[2]); var result = logArea_(json, areas, quests, characters, weapons, accessories); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'BuildingModel') { var json = JSON.parse(row[2]), bId = parseInt(json.bId); delete json.bId; buildingModels[bId] = json; } else if (row[1] == 'TownMasterModel.Buildable') { var json = JSON.parse(row[2]), bId = parseInt(json.bId); delete json.bId; if (!buildingNums[bId]) buildingNums[bId] = []; buildingNums[bId].push(json); } else if (row[1] == 'TownMasterModel.UnionInfo') { var json = JSON.parse(row[2]), bId = parseInt(json.bId); delete json.bId; if (!buildingUnions[bId]) buildingUnions[bId] = []; buildingUnions[bId].push(json); } else if (row[1] == 'ActionSkillTable') { var json = JSON.parse(row[2]); var result = LogAction_(json, actions); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'AttackTable') { var json = JSON.parse(row[2]); var result = logAttack_(json, attacks); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == "ItemModel") { var json = JSON.parse(row[2]); var result = logItem_(json, items); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == "AccessoryModel") { var json = JSON.parse(row[2]); var result = logAccessory_(json, accessories); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'WeaponModel') { var wJson = JSON.parse(row[2]); var result = logWeapon_(wJson, weapons); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'UnitModel') { var json = JSON.parse(row[2]), cJson = json.m_CachedCard; var result = logCard_(cJson, characters); if (result === 'continue') continue; else if (result) return result; var wJson = json.m_CachedWeapon; var result = logWeapon_(wJson, weapons); if (result === 'continue') continue; else if (result) return result; } else if (row[1] == 'QuestEventListModel') { var json = JSON.parse(row[2]); var eJson = json.events||[], qJson = json.quests||[]; for (var e = 0; e < eJson.length; e++) { if (/^(月曜の紫水晶|火曜の赤き煉獄|水曜の青き滝|木曜の緑突風|金曜の黄迷宮|土曜の橙山岳|日曜のハッピーサンデー|特別訓練!ソウルラッシュ!|The Shining Shadow 5章)$/.test(eJson[e].name)) continue; var found = false; for (var t = 0; t < timetableList.length; t++) { var evt = timetableList[t], data = Array.isArray(evt.data) ? evt.data : [evt.data]; for (var j = 0; j < data.length; j++) { if (data[j].name == eJson[e].name) { found = true; break; } } } if (!found) { Logger.log('eventnotfound:'+eJson[e].name); return ContentService.createTextOutput(JSON.stringify({error:'eventnotfound',name:eJson[e].name,event:eJson})).setMimeType(ContentService.MimeType.JSON); } } } } // return ContentService.createTextOutput(JSON.stringify(areas)).setMimeType(ContentService.MimeType.JSON); var result = logBuilding_(buildingModels, buildingNums, buildingUnions, buildings, items); if (result) return result; Logger.log('UpdateTables') delete characters.lookup; delete weapons.lookup; var result = updateTable_({ //Pool:JSON.stringify([{"id":1,"name":"主人公","dbIdList":[1],"period":"2014-07-14","free":1,"desc":"偏狭の孤島アストラ島で生まれ育った、剣と冒険が大好きな少年。"},{"id":2,"name":"神秘的な少女","dbIdList":[26],"period":"2014-07-14","free":1,"desc":"アストラ島(NORMAL)Story3-2「静かなる森の深部」をクリアすると仲間になる。"},{"id":3,"name":"島2","dbIdList":[44],"period":"2014-07-14","free":1,"desc":"勇敢なるエルフ"},{"id":4,"name":"島3","dbIdList":[27],"period":"2014-07-14","free":1,"desc":"気高き騎士団長"},{"id":5,"name":"初期","dbIdList":[3,2,9,12,15,17,20,22,23,28,30,32,34,36,37,39,41,42,46,10,47,49,50,52,54,55,57,63,51,53,56,58,59,60,61,62,45,29,31,33,35,38,40,43,48,11,13,14,16,18,19,21,24,25],"period":"2014-07-14","periodEnd":"2014-08-08","th":true},{"id":6,"name":"☆1st","dbIdList":[65,69,66,67,68,70],"period":"2014-08-08","periodEnd":"2014-08-29","thOut":[23,47,62,48,30,13],"th":true},{"id":7,"name":"島4","dbIdList":[71],"period":"2014-08-20","free":1,"desc":"南国の半獣娘"},{"id":8,"name":"☆2nd","dbIdList":[75,73,74,77,76,72],"period":"2014-08-29","periodEnd":"2014-09-24","thOut":[3,66,63,68,28,70],"th":true},{"id":9,"name":"☆3rd","dbIdList":[83,79,80,81,82,78],"period":"2014-09-24","periodEnd":"2014-10-15","thOut":[75,46,67,76,73,72],"th":true},{"id":10,"name":"島5","dbIdList":[84],"period":"2014-10-07","free":1,"desc":"機械の少女"},{"id":11,"name":"☆4th","dbIdList":[85,88,90,89,87,86],"period":"2014-10-15","periodEnd":"2014-11-05","thOut":[83,80,81,45,69,11],"th":true},{"id":12,"name":"Brave the Lion","dbIdList":[91],"period":"2014-10-24","periodEnd":"2014-10-27","free":1,"desc":"イベント「Brave the Lion」の初級初回クリア報酬"},{"id":13,"name":"☆5th","dbIdList":[95,93,94,97,96,92],"period":"2014-11-05","periodEnd":"2014-11-28","thOut":[85,90,77,86,87,88],"th":true},{"id":14,"name":"2000万DL","dbIdList":[98],"period":"2014-11-12","periodEnd":"2014-11-25","replacement":[92]},{"id":15,"name":"島6","dbIdList":[99],"period":"2014-11-19","free":1,"desc":"だらしのない大人"},{"id":16,"name":"神速の挑戦者","dbIdList":[100],"period":"2014-11-21","periodEnd":"2014-11-25","replacement":[79]},{"id":17,"name":"☆6th","dbIdList":[102,105,101,103,104,106],"period":"2014-11-28","periodEnd":"2014-12-24","thOut":[65,74,97,82,92,93],"th":true},{"id":18,"name":"黒猫コラボ","dbIdList":[107],"period":"2014-12-05","periodEnd":"2015-01-05","free":1,"desc":"イベント「黒猫xプロジェクト」の初級初回クリア報酬"},{"id":19,"name":"ふなっしーコラボ","dbIdList":[108],"period":"2014-12-08","periodEnd":"2015-01-05","free":1,"desc":"イベント「ふなっしーvsふにゃっしー」の初級初回クリア報酬"},{"id":20,"name":"Xmas","dbIdList":[112,110,111,113,114,109],"period":"2014-12-12","periodEnd":"2014-12-25","special":1},{"id":21,"name":"☆7th","dbIdList":[117,118,116,121,119,120],"period":"2014-12-24","periodEnd":"2015-01-28","thOut":[102,101,89,104,79,106],"th":true},{"id":22,"name":"Snow Fairy Tale","dbIdList":[115],"period":"2014-12-28","periodEnd":"2015-01-09","free":1,"desc":"イベント「Snow Fairy Tale」の第1話初回クリア報酬"},{"id":23,"name":"お正月","dbIdList":[123,124,127,125,126,122],"period":"2015-01-01","periodEnd":"2015-01-15","special":1},{"id":24,"name":"2500万DL","dbIdList":[128],"period":"2015-01-20","periodEnd":"2015-01-28","replacement":[103]},{"id":25,"name":"島7","dbIdList":[129],"period":"2015-01-23","free":1,"desc":"白馬の王子様"},{"id":26,"name":"☆8th","dbIdList":[131,132,133,134,135,130],"period":"2015-01-28","periodEnd":"2015-02-25","thOut":[95,94,103,96,120,105],"th":true},{"id":27,"name":"黒猫ガチャ","dbIdList":[137,140,136,141,139,138],"period":"2015-02-06","periodEnd":"2015-02-20","special":1},{"id":28,"name":"☆9th","dbIdList":[145,146,149,148,147,150],"period":"2015-02-25","periodEnd":"2015-03-27","thOut":[131,133,134,119,118,78],"th":true},{"id":29,"name":"新職種「クロスセイバー」","dbIdList":[143,144],"period":"2015-02-28","periodEnd":"2015-04-21","th":true},{"id":30,"name":"チョコレート","dbIdList":[152],"period":"2015-03-09","periodEnd":"2015-03-16","replacement":[117]},{"id":31,"name":"3000万DL","dbIdList":[154,153],"period":"2015-03-16","periodEnd":"2015-03-30","replacement":[130,135]},{"id":32,"name":"☆10th","dbIdList":[156,161,157,158,159,160,155],"period":"2015-03-27","periodEnd":"2015-04-21","thOut":[117,116,148,146,147,130,144],"th":true},{"id":33,"name":"主人公(神気解放)","dbIdList":[163],"period":"2014-07-14","periodEnd":"2015-03-30","upgrade":1},{"id":34,"name":"島8","dbIdList":[162],"period":"2015-03-30","free":1,"desc":"冒険家を目指す少年"},{"id":35,"name":"初期-当選(神気解放)","dbIdList":[166,164,167,169,168,165],"period":"2014-07-14","periodEnd":"2015-04-08","upgrade":1},{"id":36,"name":"マッハスピードレコーダーズ","dbIdList":[170],"period":"2015-04-14","periodEnd":"2015-04-23","replacement":[149]},{"id":37,"name":"☆11th","dbIdList":[171,177,175,172,174,173,176],"period":"2015-04-21","periodEnd":"2015-05-28","thOut":[145,158,159,160,132,155,143],"th":true},{"id":38,"name":"しょこたんコラボガチャ","dbIdList":[184,180,185,183,179,182,181],"period":"2015-04-30","periodEnd":"2015-05-22","special":1},{"id":39,"name":"ギザドリームハッピーバースデー","dbIdList":[178],"period":"2015-04-30","periodEnd":"2015-05-22","free":1,"desc":"イベント「ギザドリームハッピーバースデー」の初級初回クリア報酬"},{"id":40,"name":"ハロー!メロディアくん","dbIdList":[186],"period":"2015-05-15","periodEnd":"2015-06-08","free":1,"desc":"イベント「ハロー!メロディアくん」の初級初回クリア報酬"},{"id":41,"name":"3500万DL","dbIdList":[188,187],"period":"2015-05-18","periodEnd":"2015-05-30","replacement":[157,161]},{"id":42,"name":"☆12th","dbIdList":[189,195,193,191,192,190,194],"period":"2015-05-28","periodEnd":"2015-06-26","thOut":[156,172,174,135,157,176,161],"th":true},{"id":43,"name":"茶熊(帰宅部の少年)","dbIdList":[196],"period":"2015-06-09","periodEnd":"2015-06-29","free":1,"desc":"茶熊学園ノーマル1-1「海風そよぐ通学路」報酬"},{"id":44,"name":"茶熊","dbIdList":[202,203,198,201,200,199,197],"period":"2015-06-09","periodEnd":"2015-06-29","special":1},{"id":45,"name":"初期-落選(神気解放)","dbIdList":[204,207,206,208,205,209],"period":"2014-07-14","periodEnd":"2015-06-18","upgrade":1,"desc":"11ヶ月"},{"id":46,"name":"☆13th","dbIdList":[211,215,212,214,216,210,213],"period":"2015-06-26","periodEnd":"2015-07-31","thOut":[189,191,121,173,193,194,177],"th":true},{"id":47,"name":"サマー","dbIdList":[217,223,220,218,221,219,222],"period":"2015-07-06","periodEnd":"2015-07-30","special":1},{"id":48,"name":"常夏のサマー","dbIdList":[224],"period":"2015-07-06","periodEnd":"2015-07-30","free":1,"desc":"イベント「サマー!サマー!!サマー!!!~常夏のサマー」の初級初回クリア報酬"},{"id":49,"name":"新職種「竜」(一周年記念)","dbIdList":[226,225],"period":"2015-07-17","periodEnd":"2015-07-30","replacement":[]},{"id":50,"name":"★3クロスセイバー","dbIdList":[227,228],"period":"2015-07-17"},{"id":51,"name":"☆14th","dbIdList":[233,232,230,234,235,229,231],"period":"2015-07-31","periodEnd":"2015-09-18","thOut":[171,149,216,210,212,150,215],"th":true},{"id":52,"name":"七つの大罪","dbIdList":[240,236,238,241,242,239,237],"period":"2015-08-10","periodEnd":"2015-08-31","special":1},{"id":53,"name":"☆1st(神気解放)","dbIdList":[243,247,244,246,248,245],"period":"2014-08-08","periodEnd":"2015-08-12","upgrade":1,"desc":"12ヶ月"},{"id":54,"name":"島9","dbIdList":[249],"period":"2015-08-24","free":1,"desc":"灰緑の魔障"},{"id":55,"name":"★3★2(神気解放)","dbIdList":[251,250,252],"period":"2014-07-14","periodEnd":"2015-08-26","upgrade":1,"desc":"13ヶ月"},{"id":56,"name":"5000万DL","dbIdList":[253,254],"period":"2015-08-28","periodEnd":"2015-09-17","replacement":[211,192]},{"id":57,"name":"☆15th","dbIdList":[255,256,260,257,259,261,258],"period":"2015-09-18","periodEnd":"2015-10-31","thOut":[229,230,231,232,233,234,235],"th":true},{"id":58,"name":"ダグラス2","dbIdList":[269,263,265,268,267,266,262,264],"period":"2015-09-30","periodEnd":"2015-10-30","special":1},{"id":59,"name":"ダグラス(神気解放)","dbIdList":[270],"period":"2014-10-24","periodEnd":"2015-09-30","upgrade":1,"desc":"11ヶ月"},{"id":60,"name":"☆2nd(神気解放)","dbIdList":[275,274,273,271,276,272],"period":"2014-08-29","periodEnd":"2015-10-09","upgrade":1,"desc":"14ヶ月"},{"id":61,"name":"大型アップデート記念","dbIdList":[277,278],"period":"2015-10-16","periodEnd":"2015-10-30","replacement":[213,214]},{"id":62,"name":"☆16th","dbIdList":[281,279,282,283,284,285,286,287,280],"period":"2015-10-31","periodEnd":"2015-12-28","thOut":[255,257,259,190,175,258,256],"th":true},{"id":63,"name":"温泉","dbIdList":[293,294,289,291,290,295,288,292],"period":"2015-11-10","periodEnd":"2015-11-29","special":1},{"id":64,"name":"温泉(大忙し!アオイの国のミカド)","dbIdList":[296],"period":"2015-11-10","periodEnd":"2015-11-29","free":1,"desc":"N5-1「雪を巻き上げる翼」報酬"},{"id":65,"name":"☆3rd(神気解放)","dbIdList":[298,299,301,302,300,297],"period":"2014-09-24","periodEnd":"2015-11-19","upgrade":1,"desc":"14ヶ月"},{"id":66,"name":"Holy Night Story","dbIdList":[303,309,307,304,305,306,310,308],"period":"2015-11-30","periodEnd":"2015-12-25","special":1},{"id":67,"name":"ナンシー","dbIdList":[311],"period":"2015-11-30","periodEnd":"2015-12-25","free":1,"desc":"反対をしない少女"},{"id":68,"name":"アルカ","dbIdList":[312],"period":"2015-11-30","periodEnd":"2015-12-25","free":1,"desc":"賛成を求める暴獣"},{"id":69,"name":"武闘家強化記念","dbIdList":[316,315],"period":"2015-12-11","periodEnd":"2015-12-27","replacement":[195,214]},{"id":70,"name":"クリスマスキャラ(2014)(神気解放)","dbIdList":[326,328,329,325,327,330],"period":"2014-12-12","periodEnd":"2015-12-25","upgrade":1,"desc":"12ヶ月"},{"id":71,"name":"☆17th","dbIdList":[321,318,320,322,323,324,317,319],"period":"2015-12-28","periodEnd":"2016-02-29","thOut":[287,280,195,260,285,192,283,211],"th":true},{"id":72,"name":"お正月キャラまとめ","dbIdList":[338,332,334,337,336,335,331,333],"period":"2016-01-01","periodEnd":"2016-01-18","special":1},{"id":73,"name":"2015年版お正月キャラ(神気解放)","dbIdList":[340,342,343,344,339,341],"period":"2015-01-01","periodEnd":"2016-01-08","upgrade":1,"desc":"12ヶ月"},{"id":74,"name":"茶熊2015(神気解放)","dbIdList":[348,347,351,349,350,345,352,346],"period":"2015-06-09","periodEnd":"2016-01-14","upgrade":1,"desc":"7ヶ月"},{"id":75,"name":"茶熊学園2015ガチャ","dbIdList":[202,203,198,201,200,199,197],"period":"2016-01-14","periodEnd":"2016-01-28","special":1},{"id":76,"name":"プレミオ/ピーク","dbIdList":[354,353],"period":"2016-01-29","periodEnd":"2016-02-28","replacement":[281,261]},{"id":77,"name":"ショコラ(神気解放)","dbIdList":[370],"period":"2015-03-09","periodEnd":"2016-02-10","upgrade":1,"desc":"11ヶ月"},{"id":78,"name":"白猫×黒猫×グリココラボ","dbIdList":[363,369,367,362,365,364,368,366],"period":"2016-02-12","periodEnd":"2016-03-22","special":1},{"id":79,"name":"黒猫ガチャ(神気解放)","dbIdList":[356,359,357,358,360,355],"period":"2015-02-06","periodEnd":"2016-02-17","upgrade":1,"desc":"12ヶ月"},{"id":80,"name":"黒猫コラボ(神気解放)","dbIdList":[361],"period":"2014-12-05","periodEnd":"2016-02-20","upgrade":1,"desc":"14ヶ月"},{"id":81,"name":"★3キャラクター神気解放","dbIdList":[371,372,373],"period":"2016-02-24","upgrade":1},{"id":82,"name":"ロッカ(神気解放)","dbIdList":[382],"period":"2016-02-26","upgrade":1},{"id":83,"name":"☆18th","dbIdList":[374,375,376,377,378,379,380,381],"period":"2016-02-29","thOut":[],"th":true},{"id":4080,"name":"暫定-茶熊学園2期","dbIdList":[4910,4913,4909,4911,4912,4901,4902,4903,4904],"period":"2016-04-15","periodEnd":"2016-05-15","special":1},{"id":4081,"name":"暫定-★3ドラゴンライダー","dbIdList":[4905,4906],"period":"2016-02-29"}]), //Event:JSON.stringify([{"data":{"gamerch":"Snow%20Fairy%20Tale","name":"Snow Fairy Tale","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456470691.jpg"},"start":"2016-02-26","end":"2016-03-22","grp":"party"},{"data":{"gamerch":"Snow%20Fairy%20Tale","name":"Snow Fairy Tale","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456470691.jpg"},"start":"2016-02-26","end":"2016-03-22"},{"data":{"gamerch":"http://shironekoproject.gamerch.com/Snow%20Fairy%20Tale2","name":"Snow Fairy Tale2","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456470673.jpg"},"start":"2016-02-26","end":"2016-03-22"},{"data":{"gamerch":"ニコ生直前プレゼントクエスト","name":"ニコ生直前プレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456384007.jpg"},"start":"2016-02-25","end":"2016-03-03"},{"data":{"gamerch":"悔いあればこそ","name":"悔いあればこそ","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456300930.jpg"},"start":"2016-02-24","end":"2016-03-02"},{"data":{"gamerch":"フォースター☆プロジェクトリベンジⅡ","name":"フォースター☆プロジェクト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456300913.jpg"},"start":"2016-02-24","end":"2016-02-28"},{"data":{"gamerch":"アトランダムタワー~猛炎の守護者~","name":"ビギナーズタワー","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456141407.jpg"},"start":"2016-02-22","end":"2016-02-29"},{"data":{"gamerch":"アトランダムタワー~猛炎の守護者~","name":"プロフェッショナルタワー","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456141407.jpg"},"start":"2016-02-22","end":"2016-02-29"},{"data":{"gamerch":"今日はにゃんの日?にゃんにゃんにゃん","name":"今日はにゃんの日?にゃんにゃんにゃん","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1456124510.jpg"},"start":"2016-02-22","end":"2016-02-29"},{"data":{"gamerch":"The%20Shining%20Shadow%205章~叛逆の槍を弾く鏡","name":"The Shining Shadow 5章","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-05","end":"2016-02-29"},{"data":{"gamerch":"マッハスピードレコーダーズ!","name":"マッハスピードレコーダーズ!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-09","end":"2016-02-24"},{"data":{"gamerch":"輝け、あまふわラヴリーハート!","name":"輝け、あまふわラヴリーハート!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455778879.jpg"},"start":"2016-02-17","end":"2016-03-22","grp":"party"},{"data":{"gamerch":"お世話にニャっております!","name":"お世話にニャっております!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455873354.jpg"},"start":"2016-02-19","end":"2016-02-26"},{"data":{"gamerch":"ニコ生直前プレゼントクエスト","name":"ニコ生直前プレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455865377.jpg"},"start":"2016-02-19","end":"2016-02-23"},{"data":{"gamerch":"黒猫×プロジェクト","name":"黒猫×プロジェクト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455865281.jpg"},"start":"2016-02-19","end":"2016-03-22"},{"data":{"gamerch":"友だち登録キャンペーンプレゼントクエスト","name":"プニコンサッカープレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455779513.jpg"},"start":"2016-02-18","end":"2016-02-25"},{"data":{"gamerch":"8100万DLプレゼントクエスト","name":"8100万DLプレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455528757.jpg"},"start":"2016-02-17","end":"2016-02-22"},{"data":{"gamerch":"白黒フェスティバル!","name":"白黒フェスティバル!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455692490.jpg"},"start":"2016-02-17","end":"2016-03-22"},{"data":{"gamerch":"スウィートカラフルバレンタイン!","name":"スウィートカラフルバレンタイン!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455286642.jpg"},"start":"2016-02-12","end":"2016-02-15"},{"data":{"gamerch":"ニコ生放送決定記念プレゼントクエスト","name":"ニコ生決定記念クエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455286840.jpg"},"start":"2016-02-12","end":"2016-02-23"},{"data":{"dblink":27046,"name":"8000万DLキャンペーンまとめ","img":"http://s.shironeko.me/img/wiki2/img56b99072e4dfa_1.jpg"},"start":"2016-02-10","end":"2016-02-16"},{"data":{"gamerch":"チョコレート・パニック!?","name":"チョコレート・パニック!?","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455088038.jpg"},"start":"2016-02-10","end":"2016-03-02"},{"data":{"gamerch":"お世話にニャっております!","name":"お世話にニャっております!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455087802.jpg"},"start":"2016-02-10","end":"2016-02-17"},{"data":{"gamerch":"ハッピースイーツフェスティバル","name":"ハッピースイーツフェスティバル","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454050983.jpg"},"start":"2016-01-29","end":"2016-03-22"},{"data":{"gamerch":"花言葉を伝えて","name":"花言葉を伝えて","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454914947.jpg"},"start":"2016-02-08","end":"2016-02-15"},{"data":{"gamerch":"The Shining Shadow 5章~叛逆の槍を弾く鏡~","name":"~叛逆の槍を弾く鏡","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-05","end":"2016-02-08"},{"data":{"gamerch":"The Shining Shadow 5章~叛逆の槍を弾く鏡~","name":"叛逆の槍を弾く鏡","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-12","end":"2016-02-15"},{"data":{"gamerch":"The Shining Shadow 5章~叛逆の槍を弾く鏡~","name":"~叛逆の槍を弾く鏡","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-19","end":"2016-02-22"},{"data":{"gamerch":"The Shining Shadow 5章~叛逆の槍を弾く鏡~","name":"~叛逆の槍を弾く鏡","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656790.jpg"},"start":"2016-02-26","end":"2016-02-29"},{"data":{"gamerch":"7900万DLプレゼントクエスト","name":"7900万DLプレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454656742.jpg"},"start":"2016-02-05","end":"2016-02-12"},{"data":{"gamerch":"7800万DLプレゼントクエスト","name":"7800万DLプレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454396747.jpg"},"start":"2016-02-02","end":"2016-02-09"},{"data":{"gamerch":"新CM公開記念プレクエ","name":"新CM公開記念プレクエ","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454310220.jpg"},"start":"2016-02-01","end":"2016-02-08"},{"data":{"gamerch":"白黒カフェ&ギャラリー開催記念","name":"白黒カフェ&ギャラリー開催記念","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453964494.jpg"},"start":"2016-01-28","end":"2016-02-04"},{"data":{"gamerch":"ニコ生プレゼントクエスト","name":"ニコ生プレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453964707.jpg"},"start":"2016-01-28","end":"2016-02-04"},{"data":{"gamerch":"茶熊学園CD発売記念クエスト","name":"茶熊学園CD発売記念クエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453878142.jpg"},"start":"2016-01-27","end":"2016-02-03"},{"data":{"gamerch":"バロン道場錬武室","name":"バロン道場練武室","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453791716.jpg"},"start":"2016-01-26","end":"2050-12-31"},{"data":{"gamerch":"ニコ生直前記念プレゼントクエスト","name":"ニコ生直前記念プレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453791773.jpg"},"start":"2016-01-26","end":"2016-01-27"},{"data":{"gamerch":"エンド・リクエスト~死神の報酬~","name":"エンド・リクエスト~死神の報酬~","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453705389.jpg"},"start":"2016-01-25","end":"2016-02-01"},{"data":{"gamerch":"あったかシチューをつくろう!","name":"あったかシチューをつくろう!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453705376.jpg"},"start":"2016-01-25","end":"2016-02-01"},{"data":{"gamerch":"ニコ生放送決定記念プレゼントクエスト","name":"ニコ生放送決定記念プレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453450871.jpg"},"start":"2016-01-22","end":"2016-01-27"},{"data":{"gamerch":"ジャッジメント・オブ・ザ・ヴァンパイア%20~魂を裁く不死者の王~","name":"ジャッジメント・オブ・ザ・ヴァンパイア%20~魂を裁く不死者の王~","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453446248.jpg"},"start":"2016-01-22","end":"2016-01-29"},{"data":{"gamerch":"黒騎士の夜想曲","name":"黒騎士の夜想曲","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453273336.jpg"},"start":"2016-01-20","end":"2016-01-29"},{"data":{"gamerch":"70万フォロワープレゼントクエスト","name":"70万フォロワープレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453186868.jpg"},"start":"2016-01-19","end":"2016-01-26"},{"data":{"gamerch":"白猫モザイクアート完成記念","name":"白猫モザイクアート完成記念","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453100654.jpg"},"start":"2016-01-18","end":"2016-01-25"},{"data":{"gamerch":"悠遠の凍て星","name":"悠遠の凍て星","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452843102.jpg"},"start":"2016-01-15","end":"2016-01-22"},{"data":{"gamerch":"7600万DLプレゼントクエスト","name":"7600万DLプレゼントクエスト","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452841944.jpg"},"start":"2016-01-15","end":"2016-01-22"},{"data":{"gamerch":"MissingSymphony","name":"MissingSymphony","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452843032.jpg"},"start":"2016-01-15","end":"2016-02-05"},{"data":{"gamerch":"外伝私立茶熊学園","name":"私立 茶熊学園","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452754954.jpg"},"start":"2016-01-14","end":"2016-03-31"},{"data":{"gamerch":"茶熊学園おもひでのアルバム","name":"茶熊学園おもひでのアルバム","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452668612.jpg"},"start":"2016-01-13","end":"2016-01-20"},{"data":{"name":"7500万DL記念キャンペーン","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452668635.jpg"},"start":"2016-01-14","end":"2016-01-20"},{"data":{"gamerch":"キミとボクのツナガル世界","name":"キミとボクのツナガル世界","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452582244.jpg"},"start":"2016-01-12","end":"2016-01-19"},{"data":{"gamerch":"お世話にニャっております!","name":"お世話にニャっております!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452236683.jpg"},"start":"2016-01-08","end":"2016-01-15"},{"data":{"gamerch":"きょうだいのきずな","name":"きょうだいのきずな","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452063866.jpg"},"start":"2016-01-06","end":"2016-01-20"},{"data":[{"dbquest":129,"name":"ハッピーニューイヤーズデイ","img":"http://s.shironeko.me/img/chapter/thumb/59"},{"dblink":60,"name":"お正月(2015)建物","img":"http://s.shironeko.me/img/blog/s/60"}],"start":"2015-12-28","end":"2016-01-14"},{"data":[{"dblink":22207,"name":"開運の宝船","img":"http://s.shironeko.me/img/blog/s/22207"},{"dbquest":287,"name":"大願成就!お正月を取り戻せ!inワイハの島!","img":"http://s.shironeko.me/img/chapter/thumb/210"}],"start":"2016-01-01","end":"2016-01-14"},{"data":{"dbquest":278,"name":"緊急出動!頼むでコマちゃん!","img":"http://s.shironeko.me/img/chapter/thumb/202"},"start":"2015-11-27","end":"2016-01-31"},{"data":{"dbquest":272,"name":"白猫温泉物語","img":"http://s.shironeko.me/img/chapter/thumb/196"},"start":"2015-11-10","end":"2016-01-31"},{"data":{"dbquest":119,"name":"熱血・バロン道場","img":"http://s.shironeko.me/img/chapter/thumb/45"},"start":"2015-11-16","end":"2016-01-31"},{"data":{"gamerch":"本命チョコマゲドン!","name":"本命チョコマゲドン!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1455087981.jpg"},"start":"2016-02-10","end":"2016-03-02","grp":"party"},{"data":{"gamerch":"届け、ときめきスイートハート","name":"届け、ときめきスイートハート","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1454483060.jpg"},"start":"2016-02-03","end":"2016-03-22","grp":"party"},{"data":{"gamerch":"氷滅のバトルクライシス!","name":"氷滅のバトルクライシス!","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453450892.jpg"},"start":"2016-01-21","end":"2016-02-22","grp":"party"},{"data":[{"gamerch":"爆走!茶熊学園 ソウマチャレンジ","name":"爆走!茶熊学園 ソウマチャレンジ","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453878175.jpg"}],"start":"2016-01-27","end":"2016-02-10","grp":"party"},{"data":[{"gamerch":"爆走!茶熊学園 秋のマラソン大会","name":"爆走!茶熊学園 秋のマラソン大会","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453878156.jpg"}],"start":"2016-01-27","end":"2016-02-10","grp":"party"},{"data":[{"gamerch":"全員出席!茶熊学園","name":"全員出席!茶熊学園","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1453100641.jpg"}],"start":"2016-01-18","end":"2016-03-31","grp":"party"},{"data":[{"gamerch":"MissingSymphony~勇気の交響曲~","name":"MissingSymphony~勇気の交響曲~","img":"http://cdn.img-conv.gamerch.com/img.gamerch.com/shironekoproject/1452843177.jpg"}],"start":"2016-01-15","end":"2016-02-05","grp":"party"},{"data":[{"dbquest":288,"name":"大願成就!KING・A・SHINING","img":"http://s.shironeko.me/img/chapter/thumb/211"}],"start":"2016-01-01","end":"2016-01-14","grp":"party"},{"data":[{"dbquest":274,"name":"湯煙大乱戦!","img":"http://s.shironeko.me/img/chapter/thumb/198"},{"dbquest":273,"name":"オーバー・ザ・ヒーロー!","img":"http://s.shironeko.me/img/chapter/thumb/197"}],"start":"2015-11-13","end":"2016-01-31","grp":"party"},{"data":[{"name":"ナイトメアコロシアム"}],"start":"2016-01-04","end":"2016-01-18","grp":"party"}]), Character:characters, Weapon:weapons, Building:buildings, Action:actions, Attack:attacks, Item:items, Quest:quests, QuestGenerate:questGenerates, Stage:stages, Area:{}, CoopMission:coopMissions, CoopQuest:coopQuests, Monster:monsters, Accessory:accessories }); //if (result) return ContentService.createTextOutput(JSON.stringify(Utilities.parseCsv(result))).setMimeType(ContentService.MimeType.TEXT); // return ContentService.createTextOutput(JSON.stringify(buildings)).setMimeType(ContentService.MimeType.JSON); } return ContentService.createTextOutput('https://script.google.com/macros/s/AKfycbyymNpLG6WXbT2Ze4VvFkAzUtZOYisHfpbZ65rXnas/dev?reloadfromlog='+sheetName).setMimeType(ContentService.MimeType.TEXT); }
JS Bin
Hello World
* { margin: 0; padding: 0; } article, aside, figure, footer, header, hgroup, menu, nav, section { display: block; }
Pop out
Help
About
×
×