-
Notifications
You must be signed in to change notification settings - Fork 0
/
GAS_Script.js
139 lines (107 loc) · 3.46 KB
/
GAS_Script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// Copy this script to Google Apps Script
function doPost(e)
{
// TODO : Replace with your own Spreadsheet ID.
var app = SpreadsheetApp.openById("13cJe2iY1ZHyHjrYoayrAQ85KvbhapfnAS_RvOmu5ll4");
var sheet = app.getSheets()[0];
var parameter = e.parameter;
var visitCountRow = 3;
var visitCountCol = 4;
var rankStartRow = 7;
var rankStartCol = 2;
var totalRankCountRow = 3;
var totalRankCountCol = 2;
var outputMsg = "";
if (parameter.method == "GainNewVisitor")
{
var range = sheet.getRange(visitCountRow,visitCountCol);
var curVisitCount = range.getValue();
range.setValue(curVisitCount+1);
outputMsg = curVisitCount+1;
}
else if (parameter.method == "AddNewScore")
{
var score = parseInt(parameter.score, 10);
var myRank = 1;
var curRow = rankStartRow;
var range = sheet.getRange(curRow, rankStartCol);
var scoreOnBoard = range.getValue();
var curRankCount = sheet.getRange(totalRankCountRow, totalRankCountCol).getValue();
while (score < scoreOnBoard)
{
myRank += sheet.getRange(curRow, rankStartCol+1).getValue();
curRow++;
range = sheet.getRange(curRow, rankStartCol);
if (myRank > curRankCount)
break;
scoreOnBoard = range.getValue();
}
if (score == scoreOnBoard)
{
range = sheet.getRange(curRow, rankStartCol+1);
range.setValue(range.getValue()+1);
}
else
{
sheet.insertRowBefore(curRow);
sheet.getRange(curRow,rankStartCol).setValue(score);
sheet.getRange(curRow,rankStartCol+1).setValue(1);
}
outputMsg = myRank;
}
else if (parameter.method == "GetScoreByRank")
{
var targetRank = parseInt(parameter.targetRank, 10);
var curRankCount = sheet.getRange(totalRankCountRow, totalRankCountCol).getValue();
if (targetRank > curRankCount)
return ContentService.createTextOutput("?");
var curRank = 0;
var curRow = rankStartRow;
while (true)
{
curRank += sheet.getRange(curRow, rankStartCol+1).getValue();
if (curRank >= targetRank)
{
outputMsg = sheet.getRange(curRow, rankStartCol).getValue();
break;
}
else
curRow++;
}
}
else if (parameter.method == "GetScoreOfTopN")
{
var number = parseInt(parameter.number, 10);
var curRankCount = sheet.getRange(totalRankCountRow, totalRankCountCol).getValue();
var result = "";
var counter = 0;
var i = 0;
while (counter < number)
{
if (counter >= curRankCount)
{
result += "?";
counter++;
if (counter != number)
result += ",";
}
else
{
var playerScore = sheet.getRange(rankStartRow+i, rankStartCol).getValue();
var playerCount = sheet.getRange(rankStartRow+i, rankStartCol+1).getValue();
for (var j=0; j<playerCount; j++)
{
result += playerScore.toString();
counter++;
if (counter == number)
break;
else
result += ",";
}
}
i++;
}
outputMsg = result;
}
return ContentService.createTextOutput(outputMsg);
}