구글시트 API를 활용한 유튜브 자동화 챗봇 만들기
챗봇 만들기, 구글 API 활용 목차 바로가기
영상 강의
완성된 명령문 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [구글시트] 1강 구글시트 API 유튜브 챗봇 만들기 - 보충파일보충파일
라이브 강의 전체영상도 함께 확인해보세요!
위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.
강의에 사용된 명령문 예제 코드
구글시트 앱스크립트 API 예제 명령문
완성된 코드는 위쪽 보충자료에 정리해드렸습니다. 완성된 코드를 복사/붙여넣기해서 사용하는 방법은 아래 유튜브 챗봇 단계별 만들기를 참고해주세요. 명령문의 각 단계별 동작원리에 대한 자세한 설명은 예제코드에 적어드린 시간대 영상 강의에서 확인하실 수 있습니다.
function doGet(e){ // 통합문서&시트 불러오기 (05:35) // 시트의 머리글 받아오기 // 머리글에서 ID 제거하기 (10:14) // URL로 입력한 받은 쿼리문 받아오기 (10:54) // https://developers.google.com/apps-script/guides/web // 현재날짜/시간 출력하기 "06-05 Sat 19:30" 형태로 (14:46) // https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html // https://developers.google.com/google-ads/scripts/docs/features/dates var now = new Date(); var date = Utilities.formatDate(now, 'Asia/Seoul', 'MM-dd EEE HH:mm'); // 시트에 입력된 데이터를 받아오기 (15:14) // 쿼리문에 new가 없으면 출석회수 출력 (15:59) if (!query['new']) { } else { // 쿼리문에 new가 있으면 새로운 출석을 등록(21:49) // 기존 접속한 기록이 있으면 이미 출석했다는 안내 메시지 출력 후 종료 // 기록이 없으면, 새로운 사용자를 등록 // 쿼리로 받아온 값에는 id가 없으므로, 기존 시트에 입력된 ID를 참조하여 최대값을 계산 const ids = ws.getRange(2,1,ws.getLastRow()-1,1).getValues(); const newIDNumber = getMaxFromDoubleArray_(ids) + 1; // 머리글을 참조한 배열(ID가 없는 배열)의 맨 왼쪽에 ID 값을 추가합니다. // 시트에 데이터를 추가합니다. (21:49) // 접속회수에 1을 더한 뒤, 안내메시지 출력 후 종료합니다. } } function getMaxFromDoubleArray_(arr){ /* 배열에서 최대 값을 반환합니다.*/ let maxID = 0; arr.forEach(r => { if(r[0] > maxID) maxID = r[0]; }); return maxID; }
NightBot 커스텀 호출 구문
Command Message !출석 $(urlfetch 앱스크립트URL?U=$(querystring $(user))&L=$(time Asia/Seoul "YYYYMMDD")&new=s) !출석확인 $(urlfetch 앱스크립트URL?U=$(querystring $(user))&L=$(time Asia/Seoul "YYYYMMDD")) 구글 시트에서 제공하는 앱스크립트(Apps Script)를 활용하면 URL주소를 입력하여 시트의 값을 입/출력하는 REST API를 손쉽게 제작할 수 있습니다.
- 구글시트 만들기 : 구글로 이동한 뒤 로그인합니다. 이후 우측 상단 설정버튼을 클릭한 뒤, [스프레드 시트]를 클릭하여 구글 시트를 메인페이지로 이동합니다.
구글 로그인 - 스프레드 시트를 선택하여 구글시트 메인페이지로 이동합니다. 오빠두Tip : Sorry, unable to open the file at this time. 오류는 여러 개의 구글 아이디가 동시에 로그인 되어있을 경우 발생합니다. 오류가 발생하면 모든 구글 아이디를 로그아웃 한 뒤, 구글 아이디 하나만 로그인하여 실습을 진행합니다. - [새 스프레드시트 시작하기] 에서 [내용 없음]을 선택하여 비어있는 시트를 만든 뒤, 통합문서 이름을 "유튜브 챗봇 만들기", 시트 이름을 "Log"로 변경합니다.
통합문서와 시트의 이름을 변경합니다. - A1셀 : ID, B1셀 : U, C1셀 : L 을 입력합니다. A2~C2셀에는 임시 데이터로 아래 그림과 같이 입력합니다
시트에 임시데이터를 작성합니다. - API 스크립트 붙여넣기 : [도구] 탭 - [스크립트 편집기]를 클릭하여 스크립트 편집기를 실행합니다.
도구 - 스크립트 편집기를 클릭하여 스크립트편집기를 실행합니다. - 스크립트 편집기가 실행되면, 좌측 프로젝트 목록에서 'Code.gs'를 선택 한 후, 홈페이지에 올려드린 완성파일 전체 명령문을 복사하여 'Code.gs'에 덮어쓰기합니다. 이후 저장버튼을 눌러 스크립트를 저장합니다.
완성 명령문을 붙여넣기 후, 저장합니다. - API 배포하기 : 우측 상단의 [배포] - [새 배포]를 클릭합니다.
배포 - 새 배포를 클릭합니다. - 새 배포 창이 나오면 ①유형 선택 : 웹 앱, ②새 설명 : 유튜브 챗봇 API, ③엑세스 권한이 있는 사용자 : 모든 사용자 를 선택 후 [배포] 버튼을 클릭합니다.
배포 유형과 설명, 엑세스 권한 사용자를 선택 후 [배포] 버튼을 클릭합니다. - 엑세스 승인 버튼이 나오면 엑세스 승인버튼을 클릭하여 접근 권한을 부여합니다.
권한 승인이 필요할 경우, 절차에 따라 접근 권한을 부여합니다. 오빠두Tip : 확인되지 않은 앱오류가 나올 경우 [고급] 버튼을 클릭 - [프로젝트로 이동 (안전하지 않음)] 을 선택하여 권한을 승인할 수 있습니다. - 웹앱 URL이 생성되었습니다. URL 주소를 복사합니다.
생성된 웹앱 URL을 복사합니다. - API 사용하기 : 이제 인터넷 검색창에 아래와 같이 URL 주소를 입력하면 구글 시트에 출석체크를 등록하거나 출석 현황을 확인할 수 있습니다.
이제 URL주소를 입력해서 시트에 데이터를 입력하거나 조회할 수 있습니다. 동작 URL 출석체크 등록 웹앱URL?U=오빠두&L=20190101&new=y 출석현황 확인 웹앱URL?U=오빠두&L=20190101
이제 구글시트로 제작한 API를 활용해서 유튜브 챗봇을 만들 수 있습니다. 대표적으로 사용되는 NightBot을 사용하여 유튜브 챗봇을 제작해보겠습니다.
- NightBot 회원가입 : NightBot.tv 로 이동한 뒤, [Sign Up] - [Log in with Youtube]버튼을 클릭하여 회원가입합니다.
나이트봇에 회원가입합니다. 오빠두Tip : NightBot 회원가입은 실제 유튜브 방송을 진행할 구글 ID로 가입합니다. - 우측 상단 [Join Channel] 버튼을 클릭합니다.
로그인 후 우측 상단 [Join Channel] 버튼을 클릭합니다. - NightBot 관리자 등록 : 안내창에 적힌 순서대로, [유튜브 스튜디오] - [환경설정] - [커뮤니티] 로 이동한 뒤, 안내창에 적힌 링크를 복사/붙여넣기 하여 NightBot을 관리자로 등록합니다.
안내창에 적힌 순서대로 나이트봇을 관리자로 등록합니다. - 커스텀 명령문 작성 : 좌측 목록에서 [Command] - [Custom]을 선택합니다. 이후 [Add Command] 버튼을 클릭한 뒤 아래 표와 같이 커스텀 명령문을 추가합니다.
구글시트로 제작한 API를 커스텀 명령문으로 등록합니다. Command Message !출석 $(urlfetch 앱스크립트URL?U=$(querystring $(user))&L=$(time Asia/Seoul "YYYYMMDD")&new=s) !출석확인 $(urlfetch 앱스크립트URL?U=$(querystring $(user))&L=$(time Asia/Seoul "YYYYMMDD")) - 이제 유튜브 스트리밍을 실행 후 채팅창에 "!출석", "!출석확인"을 입력하면 구글시트에 데이터가 실시간으로 연동되며 챗봇이 동작합니다.
오빠두Tip : NightBot 유튜브 챗봇은 방송이 '공개' 상태일 경우만 동작합니다. 방송이 '비공개' 또는 '회원전용'일 경우 챗봇을 사용할 수 없습니다.
- 구글시트 만들기 : 구글로 이동한 뒤 로그인합니다. 이후 우측 상단 설정버튼을 클릭한 뒤, [스프레드 시트]를 클릭하여 구글 시트를 메인페이지로 이동합니다.