아침회의 facilitor를 무작위로 결정하는 slack bot
이것은 무엇인가
배경
출력 이미지
SpreadSheet
슬랙 채널
소스 코드
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var sheetdata = sheet.getSheetValues(1, 1, lastrow, lastcol);
var calJa = CalendarApp.getCalendarById('ja.japanese#[email protected]');
function Facilitator(){
var today = new Date();
var weekInt = today.getDay();
if(weekInt == 0 || weekInt == 6){
return false;
}
else if(calJa.getEventsForDay(today).length > 0){
return false;
}
else{
var row = Math.floor(Math.random() * 7) + 2;
var Name = sheetdata[row][0];
var row2 = Math.floor(Math.random() * 7) + 2;
var Face = sheetdata[row2][1];
var slackAccessToken = 'xxxxx(slack workspaceで一意に持っているので、要確認)';
var slackApp = SlackApp.create(slackAccessToken);
var channelId = "xxx-yyy-2020(postしたいslack channel名)";
var Message = slackApp.postMessage(channelId,"Today's facilitator is…" + Name +"-san"+ " " + "Let's GoGo!" + Face);
}
}
거친 구성 해설
SpreadSheet에 액세스하여 작성한 내용을 얻습니다.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var sheetdata = sheet.getSheetValues(1, 1, lastrow, lastcol);
var calJa = CalendarApp.getCalendarById('ja.japanese#[email protected]');
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
에서 GAS에서 활성 SpreadSheet에 액세스합니다.getLastRow()
에서 액세스 한 SpreadSheet의 마지막 행을 가져옵니다.getLastColumn()
에서 마찬가지로 마지막 열을 가져옵니다.getSheetValues(startrow, startcol, lastrow, lastcol)
에서 액세스하는 SpreadSheet 내의 전체 값을 가져옵니다.getLastRow(), getLastColumn()
로 대상 범위내의 마지막 행과 열을 동적으로 취득할 수 있으므로, 멤버가 증가한다 or 줄어든다(행++ or 행--), 투고하고 싶은 요소가 증가한다 or 줄어든다(열++ or 열--) 경우에도 괜찮습니다 CalendarApp.getCalendarById('省略')
는 Google Calender의 일본 휴일 캘린더에 액세스합니다.SpreadSheet에서 특정 이름과 얼굴을 선택하여 슬랙 채널로 보내기
function Facilitator(){
var today = new Date();
var weekInt = today.getDay();
if(weekInt == 0 || weekInt == 6){
return false;
}
else if(calJa.getEventsForDay(today).length > 0){
return false;
}
else{
var row = Math.floor(Math.random() * 8) + 2;
var Name = sheetdata[row][0];
var row2 = Math.floor(Math.random() * 8) + 2;
var Face = sheetdata[row2][1];
var slackAccessToken = 'xxxxx(slack workspaceで一意に持っているので、要確認)';
var slackApp = SlackApp.create(slackAccessToken);
var channelId = "xxx-yyy-2020(postしたいslack channel名)";
var Message = slackApp.postMessage(channelId,"Today's facilitator is…" + Name +"-san"+ " " + "Let's GoGo!" + Face);
}
}
today.getDay()
로, 지정된 일자의 「요일」을 취득하고 있다0 == 日曜日, 1 == 月曜日... ,6 == 土曜日
입니다.weekInt == 0 || weekInt == 6
에서, 휴일(토요일 or 일요일)은 보내지 않게 하고 있다 calJa.getEventsForDay(today).length > 0
그리고 휴일 이벤트가 캘린더에 하나라도있을 때 보내지 않도록합니다.Math.floor(Math.random() * 8) + 2
에서는, 최대로 9, 최소로 2가 되는 행 번호를 1개 취득해, 1열째에 적용하고 있다Math.floor()
에서 ()의 값을 소수점 이하로 자릅니다.Math.random()
에서 0 이상 1 미만 (0은 포함하지만 1은 포함하지 않음) 사이의 random 값을 반환합니다.row2
의 내용도 같은 일을 하고 있다 slackAccessToken
주위는 GAS와 Slack으로 시작하는 채팅봇~초보자 프로그래머용~ 주변을 참고로 한다 channelId = "xxx-yyy-2020(postしたいslack channel名)"
post 하고 싶은 Slack Channel명을 #빼기로 기술한다 slackApp.postMessage(channelId,"Today's facilitator is…" + Name +"-san"+ " " + "Let's GoGo!" + Face)
에서 실제로 해당 Slack Channel에 post하지만, text로 직접 기술하고 있는 부분은 변경해 주어 괜찮다 (ex. "Today's facilitator is…"
, "-san"
etc) 트리거
참고
매주 청소 당번을 Slack에 무작위로 통지
청소 당번 할당을 Google Apps Script로 자동화하여 Slack BOT로 알림
Reference
이 문제에 관하여(아침회의 facilitor를 무작위로 결정하는 slack bot), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sk8erboi/items/ddcec6c2d72fd41eb17e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)