-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathコード.gs
119 lines (87 loc) · 2.33 KB
/
コード.gs
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
/** 最大値 */
var maxNum = 999;
function doAllDays() {
var num = Browser.inputBox("何日じっこうしますか?");
for(var i = 0; i < num; i++){
main();
}
}
/*
概要:抽選メイン処理
備考:
*/
function main() {
// 現在表示されているスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSheet();
// 累計ラッキー数を取得
const numLucky = getColumnList(sheet, 2);
// 対象位置に移動
moveInitCell(sheet);
// 抽選
doLottery(sheet, numLucky);
// ステータスを完了に設定
sheet.getActiveCell().offset(-1, 0).setValue('完了');
}
/*
概要:対象列を取得
備考:
*/
function getColumnList(sheet, num) {
// 列すべてを取得
return sheet.getRange(3, num, sheet.getLastRow() - 2, 1).getValues();
}
/*
概要:初期位置に移動
備考:
*/
function moveInitCell(sheet) {
// 状況行の情報を取得
const statusList = sheet.getRange("2:2").getValues()[0];
for(var i = 0; i < statusList.length; i++){
if(statusList[i] === ''){
sheet.getRange(3, i + 1).activate();
break;
}
}
}
/*
概要:抽選処理
備考:
*/
function doLottery(sheet, numLucky) {
// 対象列の情報を取得
var numList = getColumnList(sheet, sheet.getActiveCell().getColumn());
Logger.log('numList : ' + numList);
for(var i = 0; i < numList.length; i++){
if(numList[i] != ''){
// 絶対に選ばれないように最大数 + 1
numLucky[i] = maxNum + 1;
}
}
Logger.log('numLucky : ' + numLucky);
//ラッキーの最小数を取得
var minNum = Math.min.apply(null, numLucky);
for(var i = 0; i < numLucky.length; i++){
if(numLucky[i] === maxNum + 1){
numLucky[i] = maxNum + 1;
}else if(numLucky[i] > minNum){
numLucky[i] = maxNum;
}else{
numLucky[i] = getRandom(1, 100);
}
}
// 最小数を取得
minNum = Math.min.apply(null, numLucky);
Logger.log('numLucky : ' + numLucky);
for(var i = 0; i < numLucky.length; i++){
if(numLucky[i] === minNum){
sheet.getActiveCell().offset(i, 0).setValue("ラ");
break;
}
}
}
// 乱数を生成
function getRandom( min, max ) {
const random = Math.floor( Math.random() * (max + 1 - min) ) + min;
return random;
}