점심 회원을 무작위로 좋은 느낌으로 선택하는 GAS 스크립트
아래와 같은 URL을 클릭하는 것만으로, 규정의 배열로부터 몇명을 선택해 준다.
https://script.google.com/macros/s/XXXXX-XXXX/exec
https://script.google.com/macros/s/XXXXX-XXXX/exec?num=2
https://script.google.com/macros/s/XXXXX-XXXX/exec?num=3
https://script.google.com/macros/s/XXXXX-XXXX/exec?num=4
다음과 같은 스크립트를 GAS에 넣고 웹 애플리케이션으로 게시하면 OK
function doGet(e) {
if(!isOurGsuiteUser()) {
return resText("ログインアドレスが違います");
}
postSlackMessage(getMessageArray(e).join("\n"));
return resText("OK!");
}
function testSlack() {
const array = getMessageArray();
postSlackMessage(array.join("\n"))
}
function getMessageArray(e) {
const num = getNum(e);
const array = [
getLoginUser() + `さんからのリクエストでランダムに \`${num}人\` 選ばれました :tada:`,
"",
"```",
...(getMember(num)),
"```",
"",
"ランチとか1on1とか楽しんできてください:+1::star:",
];
return array;
}
function postSlackMessage(message) {
var postUrl = 'https://hooks.slack.com/services/BBBBB/XXXX/????????'; // webhookurlは自分のチャンネルで取得してください
var username = 'Choice BOT';
var icon = ':slightly_smiling_face:';
var jsonData =
{
"username" : username,
"icon_emoji": icon,
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
/**
* memberを指定の数だけ返す
*/
function getMember(num){
const member = [
'Aさん',
'Bさん',
'Cさん'
];
return shuffle(member).slice(0,num);
}
/**
* 何人にするか
* 基本は1人
* @return number
*/
function getNum(e) {
if (!e) {
return 1;
}
const num = parseInt(e.parameter.num);
return isNaN(num) ? 1 : num;
}
/**
* ログインユーザーのアドレスを確認して弊社社員か確認する
*/
function isOurGsuiteUser() {
const user = Session.getActiveUser();
const email = user.getEmail();
return email && email.split("@") && email.split("@")[1] === "gmail.com";
}
/**
* ログインユーザーを取得
* return Sting
*/
function getLoginUser() {
const user = Session.getActiveUser();
const email = user.getEmail();
if (email && email.split("@") && email.split("@")[0]) {
return email.split("@")[0];
}
return "Who??";
}
/**
* responceのラッパーにしようとしている
*/
function resText(text) {
return ContentService.createTextOutput(text)
}
/**
* 配列をシャッフルする
*/
function shuffle(array) {
for (let i = array.length - 1; i >= 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
Reference
이 문제에 관하여(점심 회원을 무작위로 좋은 느낌으로 선택하는 GAS 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ykhirao/items/11479365b0280a6aaeca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)