-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathわけわけ発表.gs
116 lines (97 loc) · 2.6 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
function annouceTeam() {
deleteTrigger("annouceTeam");
var userId = getUserId();
var userName = getUserName(userId);
var teamMember = createTeam(userName);
postMessage(teamMember);
}
function postMessage(teamMember) {
var method = "chat.postMessage";
var url = API_BASE_URL + method;
var groupText = '';
for (var key in teamMember) {
groupText += Number(key) + 1 + "グループ:" + teamMember[key].join(" ") + "\n";
}
var formData = {
token : TOKEN,
channel : CHANNEL,
text: ANNOUCE_TEAM_TEXT + "\n" + groupText,
icon_emoji : ICON_EMOJI,
username : BOT_NAME,
link_names : true,
};
var options = {
method : 'post',
payload : formData,
};
var response = UrlFetchApp.fetch(url, options);
}
function createTeam(userName) {
var teamCount = Math.floor(userName.length / COUNT_EACH_TEAM);
if (teamCount === 0) {
teamCount = 1;
}
// シュワルツ変換
var shaffledName = userName.map(function(a){return {weight:Math.random(), value:a}})
.sort(function(a, b){return a.weight - b.weight})
.map(function(a){return a.value});
var teamHash = {};
userName.forEach(function (name, index) {
var i = index % teamCount;
if (!teamHash[i]) {
teamHash[i] = [];
}
teamHash[i].push('@' + name);
});
return teamHash;
}
function getUserName(userId) {
var method = "users.list";
var url = API_BASE_URL + method;
var formData = {
token : TOKEN,
};
var options = {
method : 'get',
payload : formData,
};
var response = UrlFetchApp.fetch(url, options);
//Logger.log(response.getContentText());
var content = response.getContentText();
var jsonParsed = JSON.parse(content);
var members = jsonParsed.members;
var memberHash = {};
members.forEach(function(member) {
memberHash[member.id] = member.name;
});
var userName = [];
userId.forEach(function(id) {
userName.push(memberHash[id]);
});
return userName;
}
function getUserId() {
var method = "reactions.get";
var url = API_BASE_URL + method;
var formData = {
token : TOKEN,
channel : CHANNEL,
timestamp : TIMESTAMP,
};
var options = {
method : 'get',
payload : formData,
};
var response = UrlFetchApp.fetch(url, options);
//Logger.log(response.getContentText());
var content = response.getContentText();
var jsonParsed = JSON.parse(content);
var userHash = {};
var reactions = jsonParsed.message.reactions;
reactions.forEach(function(reaction) {
reaction.users.forEach(function(user) {
userHash[user] = '';
});
});
return Object.keys(userHash);
}