- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 18/09/06 00:59:21수정됨
Name   CIMPLE
Link #1   https://ifttt.com/
Subject   Gmail 내용으로 구글캘린더 이벤트 자동생성하기
질게에도 올렸었는데요, 오늘 시간을 투자해서 방법을 알아낸 “Gmail 내용으로 구글 캘린더 이벤트를 자동 생성하는 방법”을 공유할까 합니다.
미루면 안쓸걸 알고있지만 또 자세히 쓰려면 한도끝도 없는 종류의 글이라 제 귀차니즘이 감당하는 선에서 간결하게 쓰도록 하겠습니다.
그리고 중간에 약간의 코딩이 포함되는데 전혀 어려운건 아니라서 코딩을 잘 모르시더라도 혹시 필요하시면 동일하게 세팅해서 쓰실수 있습니다.

일단 이걸 추진하게 된 input-output 은 간단합니다.

Input : 휴가 가는 사람, 휴가 기간이 적힌 Gmail
Output: 위 정보로 구글 캘린더 이벤트 자동생성

여기서 자동생성의 의미는 유저가 아무것도 안해도 되고, 그냥 Gmail 을 수신하는 것만으로도 캘린더에 자동으로 등록되는걸 의미합니다.
당연히 저는 구글신이니까 버튼클릭 몇번에 키워드 몇개 써넣으면 손쉽게 될줄 알았는데, 이게 안되더라고요.

리서치한것 간단히 요약하면

- 수신된 Gmail 에 기반해서 캘린더 이벤트를 자동 생성하는 기능이 있긴 한데, 특별한 몇몇 이벤트만 됩니다. 항공기,호텔, 레스토랑, 공연예약 딱 이거 4개만 됩니다. 그것도 아마 한글은 자동으로 안되고 그럴거에요. 즉 제가 커스텀하게 만든 이메일 일정은 자동등록 안됩니다.
- 위의 자동생성 말고 Gmail 에서 수동으로 옵션 클릭해서 ‘일정 만들기’ 라는 기능이 있습니다. 메일에 적혀 있는 날짜 등을 자동인식해서 캘린더 이벤트를 만들어 주는건데 역시 한국어메일은 잘 안되고 일단 이건 수동이라 제외합니다.
- 이런 일을 해주는 웹서비스들이 있습니다. 제가 찾은건 automate.io 나 zapier 같은 서비스들이 그것들인데 다 유료더라고요. 무료 15일 지나면 제가 설정해놓은것들이 리셋되는 놈들이어서 조금 만지작거리다가 제외.

그리고 나서 홍차넷 질문게시판에 질문을 올린 다음에 알아낸 것이 바로 IFTTT 였습니다.



이름 참 오묘한데요, 이쪽 업계에서는 아마도 얘가 대세인것 같습니다. 사실 저는 이런쪽은 잘 몰라요. 알고보니 대세가 아니었습니다! 일수도 있으니 너무 지적은 마시고
IFTTT 는 다양한 어플리케이션과 어플리케이션을 서로 연결해 주는 역할을 합니다. 뭐 대단히 많은 서비스들을 상호 연결시켜 주니 그건 더 설명하지 않기로 하고 저는 지메일과 구글 캘린더를 연결하는데 이걸 활용했습니다.

IFTTT 는 “애플릿(Applet)” 이라는 이름의, 일종의 작은 소프트웨어를 유저가 목적에 맞게 직접 개발해서 사용하는 시스템입니다. 단 이 과정을 프로그래밍을 모르더라도 할수 있게 해놨는데요, 각 어플리케이션에서 Field(필드) 안에 들어가는 Value(값) 에 Ingredient(성분) 이라고 불리우는 요소들을 손쉽게 상호 연결해서 자동으로 일을 할수 있게끔 합니다. 걍 복잡하니 성분으로 통일합시다.


(IFTTT의 Trigger-Filter-Action 의 개요. 구조를 손쉽게 이해할 수 있다.)


즉 위에서 언급한 지메일과 구글 캘린더로 예를 들면
지메일은 ‘제목’, ‘보내는사람’, ‘받는사람’, ‘본문’ 등이 있겠고 이게 성분입니다.
구글 캘린더는 ‘이벤트 제목’, ‘이벤트 설명’, ‘시작시간’, ‘종료시간’ 등이 성분이고요. 성분과 성분을 연결하는게 IFTTT 의 프로그래밍입니다. 말그대로 1:1 매핑이에요.
지메일은 Trigger(트리거) 즉 방아쇠가 당겨지는 역할을 합니다.


(IFTTT 의 '트리거' 어플리케이션으로 지메일을 설정한 모습)

그럼 구글 캘린더에서 Action(액션) 이 일어납니다.


(IFTTT의 '액션' 이 일어날 어플리케이션 구글 캘린더를 선택한 모습)

그래서 if(만약) this Trigger(이 트리거)  then(하면) that Action (이렇게 행동) 하라고 해서 사이트 이름이 이모양이죠.

IFTTT에 가입하셔서 지메일이랑 구글 캘린더 연동하시고, 검색을 통해 내가 개발하고자하는 애플릿과 비슷한걸 찾아서 그걸 수정해서 쓸 수도 있고, 내가 원하는 애플릿을 바로 만들어 쓸 수도 있습니다. 애플릿 개발은 IFTTT Platform 이라는 곳에서 이루어집니다.

애플릿 개발은 매우 쉽습니다.
- Trigger 영역에서 어플리케이션을 선택(지메일)
- Trigger 의 조건 선택(특정 Label 의 메일이 수신 - 지메일에서 필터 만들어서 특정 메일에 자동으로 레이블링 합니다.)
- Action 영역에서 어플리케이션과 주요 액션을 선택(구글 캘린더 - 이벤트 생성. 여기에서 이벤트 생성 방식을 quick add 와 create detailed event 선택할수 있는데 quick add 는 뭔짓을 해도 날짜가 안바뀌더군요. 그래서 create detailed event 선택했습니다.)
- Action 의 필드에 Trigger 의 성분을 연결 (ex. 구글 캘린더의 이벤트 제목(Title) 과 이메일의 제목(Subject) 를 연결)


(Action 에서 'Title' 이라는 필드의 값에 Subject(지메일 제목) 이라는 성분을 연결한 모습)

이렇게 해놓고 Save 한 다음에 동작시키면 되는겁니다. 그런데 구글 캘린더 같은 경우는 필수 성분이 시작시간(Start time) 과 끝나는 시간(End time) 입니다. 이게 없으면 일정이 제대로 생성이 안돼요.

근데 여기서 문제가, 구글 캘린더 이벤트의 제목은 이메일 제목과 1:1 매핑시킨다는 식으로 간단히 해결 가능한데, 시작시간/끝나는 시간은 메일 내용(Body) 에서 1:1 매핑이 안된다는 문제가 있습니다. 당연히 메일 내용을 아무리 간단히 휴가 시작하는 날짜, 휴가 끝나는 날짜로 딱 정해놓는다고 해도 “2018-09-06~2018-09-08 “ 이런식으로 본문이 적힐 것이기 때문에 메일 내용을 내가 원하는 대로 분리를 해서 넣어야 합니다. 그런데 기본적으로 이런 성분 분류는 지원을 하고 있지 않아요. 그렇다고 지메일의 다른 성분을 이용하기도 애매합니다. ‘참조’, ‘첨부파일’ 뭐 이런 성분들을 저런 날짜분류에 활용하기도 애매하죠.

그래서 Trigger 와 Action 중간에 Filter(필터) 가 존재합니다. 일종의 커스터마이즈 코딩을 하게 되는 부분인데, 완전 자유로운 것은 아니고 어디까지 Trigger 와 Action 을 연결시켜 주는 역할을 합니다. 여기에서 커스터마이즈 코딩은 자바스크립트를 활용하게 되는데요,  제가 만들어 준 부분은 아래와 같습니다.


(자바스크립트 작성 모습. 맨 아래 주석 라인은 all day 이벤트인지 정하는 boolean 옵션인데 휴가라서 체크했더니 마지막 날짜가 하루 잘리더라고요.. 저거없으면 약속시간이 정오로 고정되는데 어쩔수없이 주석처리함)

이건 다름 아니라 지메일의 본문 내용이

2018-09-06
2018-09-07
휴가갑니다~

로 적혀 있으면 첫 번째 줄은 캘린더의 startTime 에, 두 번째 줄은 endTime 에, 그리고 전체 bodyText 는 캘린더의 Description 에 연결시키라는 것입니다. 이런식으로 메일 내용을 간단히 분류해서 Action 에 꽂을 수 있습니다. 당연히 이건 메일이 딱 저런 형태로만 씌여져 있어야 합니다. 만약 좀더 고난이도의 Text parsing 이 필요하다면 더 추가적으로 구현을 할 수도 있겠지요. 그런데 저기 나오는 GoogleCalendar.addDetailedEvent.setDescription(); 같은 어플리케이션 클래스 함수 몰라도 돼요. 옆에 무슨 함수 쓸수 있는지 다 나오고(몇개안돼요) 자동완성도 됩니다. 

무척 간단하게 제작되는 소프트웨어이지만 확장성을 높여 주는 부분이 바로 이 Filter 이므로 Filter 가 적용된 애플릿은 배포할 수가 없고 개인적 목적으로만 쓰게 되어 있습니다. 다른이도 쓸 수 있게 배포하고 싶으면 유료버전을 사야 돼요.

짧게  쓰려고 했는데 길어졌네요… 더 깔끔하게 이해가기 쉽게 써야 하는데 그냥 대충대충 넘어간 부분도 많고 죄송합니다. 혹시 직접 해보실 분들은 해보시다 막히면 제가 그때 그때 답변 드리도록 하겠습니다. 참, 제가 만든 애플릿은 javascript 가 포함되어 있어서 배포가 안돼요. 그래서 저 애플릿을 직접 공유하는건 어려울것 같습니다. 
둘러보니까 이미 다른사람들이 제작 배포 공유한 것들 중에 재밌어 보이는 애플릿도 많더라고요. 문자를 보내서 LG 세탁기를 돌릴 수 있는 애플릿 같은것도 있는것같고… 역시 세상에는 공부하면 재밌는게 참 많은것 같습니다. 감사합니다!




6
  • 프로그래밍은 ㅊㅊ
  • 1어시 뿌-듯


목록
번호 제목 이름 날짜 조회 추천
8446 IT/컴퓨터아이패드 프로 새모델이 공개되었습니다. 18 Leeka 18/10/31 4406 1
8325 IT/컴퓨터마우스 구매후기, cougar minos x5 4 Weinheimer 18/10/05 5684 0
8290 IT/컴퓨터갤노트9, 첫달 판매량 전작의 65% 수준으로 감소 6 Leeka 18/09/27 3762 0
8187 IT/컴퓨터EJB 를 아시나요? (2) 6 메아리 18/09/09 3933 9
8172 IT/컴퓨터Gmail 내용으로 구글캘린더 이벤트 자동생성하기 8 CIMPLE 18/09/06 7535 6
8117 IT/컴퓨터Zen 2 아키텍쳐를 기다리며 21 Erzenico 18/08/26 5375 0
8091 IT/컴퓨터개발에 대해 설명해주는 외국인 강사 1 Toby 18/08/22 4424 2
8058 IT/컴퓨터XPS 15 9570 : 델이 만든 하이엔드 노트북 23 Cascade 18/08/15 8103 6
8055 IT/컴퓨터EJB 를 아시나요? (1) 10 메아리 18/08/14 4852 11
7758 IT/컴퓨터파워렉스 부도설....역사 속으로 사라지나 6 Under Pressure 18/06/27 3327 0
7645 IT/컴퓨터첫 amd, ryzen 2700x 구입 및 사용기 8 Weinheimer 18/06/10 6194 1
7610 IT/컴퓨터공공기관 전산실 직원은 무엇을 하는가 20 revofpla 18/06/01 4565 2
7420 IT/컴퓨터전에 이야기했던 당뇨치료용 전자발찌 근황.. 2 집에가고파요 18/04/21 4028 0
7400 IT/컴퓨터만들다 보니 전자발찌가 되다니.. -_-~~ 52 집에가고파요 18/04/17 6124 13
7365 IT/컴퓨터페이스북 정보 유출 확인 주소 5 Leeka 18/04/11 4700 0
7292 IT/컴퓨터[구인] 윈도우 서버개발자 및 iOS 앱개발자 찾습니다. 9 기쁨평안 18/03/27 3715 0
7219 IT/컴퓨터애플 제품 (아이폰 x, 아이패드 프로 10.5인치, 에어팟, 애플워치) 후기 15 한신 18/03/09 6677 3
7189 IT/컴퓨터MWC에서 보인 애플의 영향력.. 10 Leeka 18/03/04 4073 3
7106 IT/컴퓨터금융권의 차세대 시스템이 도입되는 과정 34 기쁨평안 18/02/13 11846 20
7062 IT/컴퓨터ios 11.3 베터리 관리 기능 안내 4 Leeka 18/02/07 4286 0
7061 IT/컴퓨터많이들 헷갈리는 USB-C와 USB3.0 그리고 썬더볼트의 차이점 16 보리건빵 18/02/07 36795 10
7060 IT/컴퓨터기다리던 라이젠 모바일(레이븐릿지)가 달린 노트북이 한국 정발되었습니다~ 6 보리건빵 18/02/06 6407 0
7051 IT/컴퓨터산돌 폰트클럽 폰트판매 종료 1 Toby 18/02/05 5874 0
7036 IT/컴퓨터애플스토어가 들어오면서 시작된 것들 4 Leeka 18/02/02 6038 1
7035 IT/컴퓨터딥러닝으로 만든 유인나 오디오북 10 Toby 18/02/02 10894 1
목록

+ : 최근 2시간내에 달린 댓글
+ : 최근 4시간내에 달린 댓글

댓글