- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
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어시 뿌-듯


목록
번호 제목 이름 날짜 조회 추천
13218 게임디아블로2 레저렉션 래더2기 시작 기념 소서리스 스타팅 가이드 9 CheesyCheese 22/10/11 3322 11
13557 IT/컴퓨터아이폰 c타입 루머 관련해서.. 26 CheesyCheese 23/02/10 2250 1
13908 요리/음식다이어트 소스 리뷰 8 CheesyCheese 23/05/25 2089 5
9316 사회너무나 자유롭게 보였던 당신은 누구셨나요 1 chemf 19/06/14 4910 1
9201 일상/생각끝나지 않은 투병기 21 Chere 19/05/16 6308 67
10232 역사오등작제(五等爵制) 논쟁 - 사실 우리는 아무것도 정확하게 모른다 3 Chere 20/01/28 5154 16
10334 역사역사학 강연에서 의용대를 자처하는 이들을 만난 이야기 8 Chere 20/02/29 4445 33
10513 역사도철문, 혹은 수면문 이야기 2 Chere 20/04/18 4370 14
4342 영화[라라랜드]아름다운 청춘(스포없음) 5 Chloe 16/12/09 5778 1
5614 정치이번 대선 투표율과 득표수 7 Cibo & Killy 17/05/11 4074 0
5376 게임섀도우버스 재미있네요. 4 Cibo & Killy 17/04/05 3489 0
5682 댓글잠금 정치靑, "강경화, 딸 이중국적·위장전입 확인했지만…외교 적임자라 발탁" 14 Cibo & Killy 17/05/21 5902 6
8095 정치마키아밸리가 문재인 대통령에게 전하는 이야기 15 CIMPLE 18/08/22 5422 2
7787 사회아시아나 기내식 대란 사태를 나름 개조식으로 정리해 보았습니다. 15 CIMPLE 18/07/04 4467 7
7952 사회가짜학회에 논문을 내는 한국 교수들 39 CIMPLE 18/07/26 9066 11
8172 IT/컴퓨터Gmail 내용으로 구글캘린더 이벤트 자동생성하기 8 CIMPLE 18/09/06 7979 6
8220 게임[하스스톤] 9월 2주차 난투 부활사제덱 9 CIMPLE 18/09/13 4658 0
8662 게임lol) 페이커 : we'll get them all back. 2 CIMPLE 18/12/20 4726 1
8712 정치신재민 전 사무관 폭로사건 21 CIMPLE 18/12/31 5906 2
10624 일상/생각한국 조직문화에 대한 인식의 세대 차이 17 cogitate 20/05/26 4053 2
10656 일상/생각오랜 미국생활러가 느낀 한국 전세, 월세 부동산 시장의 신기한 점 36 cogitate 20/06/06 5435 1
1604 의료/건강막장 사건이 하나 터졌네요. 31 Cogito 15/11/20 8779 0
3762 게임TCG가 고픈 분들에게 매직 : 듀얼을 소개합니다 4 Cogito 16/09/24 6581 1
3949 게임[롤드컵]H2K 수석코치 Prolly 인터뷰(갭은 줄어드는가) 17 Cogito 16/10/19 5238 0
4011 게임삼성 크라운 : 미국이 더 재미있어. 미국에서 태어났으면 더 좋았을 것 7 Cogito 16/10/26 6346 0
목록

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

댓글