코드스테이츠 부트캠프 수강하는중에 출석체크를 자주 까먹어서
디스코드 webhook과 구글 Apps Script 이용해 알림봇을 만들어보려고 합니다
디스코드 웹훅 생성
먼저, 디스코드 웹훅을 생성해야 합니다. 디스코드 웹훅은 다양한 용도로 사용할 수 있는 URL입니다. 이 URL을 이용하여 알림을 보낼 수 있습니다.
구글 Apps Script 생성
구글 Apps Script는 구글 서비스를 자동화하는 데 사용되는 스크립트 언어입니다. 이를 사용하여 디스코드 웹훅으로 메시지를 보내는 스크립트를 작성합니다. 예를 들어, 수업 시간을 추적하고, 수업 시작 10분 전에 알림을 보내도록 설정할 수 있습니다.
구글 Apps Script 코드 작성
제가 작성한 아래의 코드를 참고하여 Apps Script를 저장 합니다.
const url = '복사했던 디스코드 url 붙여넣기!!';
let msg = {
/*"avatar_url": "",*/
"username": "알림봇",
"content": "메세지"
};
//fetch를 이용해서 디스코드 url에 POST요청
function pushMessage(obj) {
UrlFetchApp.fetch(url, {
"method": "POST",
"headers": {
"Content-type": "application/json"
},
"payload": JSON.stringify(obj)
});
}
//트리거 중복방지용으로 만든 시트를 특정 시간에 초기화 시킬 함수
function resetCells() {
let sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.getRange('B1:B5').setValue('미완료')
}
//스프레드시트 해당 cell의 값을 검사, 트리거 중복방지용
function checkAlarms(cell) {
let sheet = SpreadsheetApp.getActiveSpreadsheet();
if(sheet.getRange(cell).getValue() === '완료') return false
else if(sheet.getRange(cell).getValue() === '미완료'){
sheet.getRange(cell).setValue('완료')
return true
}
}
const getTime = () => {
const now = new Date()
const hh = Number(now.getHours()) < 10? `0${now.getHours()}`:now.getHours()
const mm = Number(now.getMinutes()) < 10? `0${now.getMinutes()}`:now.getMinutes()
return `${hh}:${mm}`
}
//메인 기능
function App() {
const now = new Date();
if(now.getDay() > 0 && now.getDay() < 6) { //월화수목금에만 알림 1,2,3,4,5
switch (getTime()){
case '08:30':
msg = {...msg,'content' : `@everyone 여러분!! ${now.getMonth()+1}월 ${now.getDate()}일 오전 입실 시간입니다.\n🎯입실인정 08:30 ~ 09:10`}
checkAlarms('B1')? pushMessage(msg) : false
break;
case '18:00':
msg = {...msg,'content' : `@everyone 여러분!! ${now.getMonth()+1}월 ${now.getDate()}일 오후 퇴실 시간입니다.\n🏡퇴실인정 18:00 ~ 19:30`}
checkAlarms('B2')? pushMessage(msg) : false
break;
case '09:55':
msg = {...msg,'content' : `@everyone 여러분!! ${now.getMonth()+1}월 ${now.getDate()}일 오전 회의 시작 5분전 입니다.\n👹회의실에 입장해주세요~`}
checkAlarms('B3')? pushMessage(msg) : false
break;
case '16:55':
msg = {...msg,'content' : `@everyone 여러분!! ${now.getMonth()+1}월 ${now.getDate()}일 오후 회의 시작 5분전 입니다.\n🐷회의실에 입장해주세요~`}
checkAlarms('B4')? pushMessage(msg) : false
break;
}
}
}
❓해당 권한은 작성자와 관계가 없습니다. (본인이 본인한테 권한부여 하는것)
💡 여기까지 따라 오셨으면 90% 성공 입니다 !! 이어서 아래 트리거를 추가하여 특정 시간마다 함수를 작동 시켜주세요
Apps Script 프로젝트에 트리거 추가
Apps Script 프로젝트에 트리거를 추가하여 정기적으로 출석체크 시간을 확인하고, 회의 시작 5분 전에 메시지를 보내도록 설정할 수 있습니다.
알림봇 테스트
알림봇이 정상적으로 작동하는지 확인하기 위해, 테스트를 진행해야 합니다. 이를 위해, 구글 스프레드시트에서 Apps Script 함수를 실행할 수 있습니다.
추가 설명
case '08:30':
msg = {...msg,'content' : `@everyone 여러분!! ${now.getMonth()+1}월 ${now.getDate()}일 오전 입실 시간입니다.\n🎯입실인정 08:30 ~ 09:10`}
checkAlarms('B1')? pushMessage(msg) : false
break;
오전 08:30분에 ‘content’ 에 해당하는 메세지를 push 하고
스프레드 시트 B1셀을 중복방지 용으로 사용합니다
//트리거 중복방지용으로 만든 시트를 특정 시간에 초기화 시킬 함수
function resetCells() {
let sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.getRange('B1:B5').setValue('미완료')
}
resetCells 함수가 자정(트리거)에 실행 되면 중복방지 값이 초기화 됩니다
마치며
이상으로, 구글 Apps Script 생성 방법에 대한 가이드를 마치겠습니다. 이제부터 여러분은 구글 앱과 상호작용하는 자동화된 스크립트를 만들 수 있게 되었습니다. 좋은 결과 있기를 기대합니다!