이벤트 신호 발생 – IFTTT로 구글스프레드시트에 기록하기

기본 세팅 아이디어

IFTTT는 ‘~하면 ~하라’와 같은 업무 자동화를 여러 서비스를 연결하여 구현할 수 있도록 도와줍니다. 간단하게, IFTTT 앱이 제공하는 아이폰 위젯버튼 기능으로 이것을 구현할 수 있을 거 같습니다.

통증이 발생한다 → 아이폰 위젯이 나오도록 화면을 밀어넘김 → 미리 세팅한 버튼을 누른다 → 구글 스프레드시트에 해당 시간이 남는다 → 나중에 스프레드시트를 가공하여 통계를 내고 경향을 관찰한다.

구글스프레드시트 기록형식 주의할 점

그런데 IFTTT 가 타임스탬프를 구글스프레드시트로 보낼 때 사용하는 기록 형식이 나중에 엑셀이나 구글 스프레드시트에서 활용하기 좀 부적절한 형식입니다. August 11, 2017 at 10:39AM와 같이 되어 있는데, 이런 식이면 8월 10일부터 15일까지 몇 번이나 로그가 찍혔는지 통계내고 싶을 때 계산하기 곤란해지거든요.

문제 해결을 위해 두 가지 조치가 필요한데, 일단 “at” 문자 부분을 제거하여 활용해야 합니다. 날짜 at 시간과 같은 형태는 엑셀이나 기타 스프레드시트에서 잘 쓰는 표현이 아닙니다. 하지만 “August 11, 2017″은 널리 호환 가능하고 1월부터 12월까지 날짜순으로 정렬도 됩니다. “10:39AM”도 시간으로 인식되어 시간순 정렬하거나 24시간 형식으로 변환도 됩니다. 그러므로 이 at부분만 삭제하거나, 앞뒤로 잘라 활용해야 합니다.

구글링해보면 문자열 자르기부터 정규식을 활용하는 사람까지 여러 사람들이 이 문제를 해결하기 위해 조언하고 있는데…무엇이든 적용해서 잘 작동하면 그만입니다. 참고로 활용하기 편하게 열을 나누어 날짜와 시간을 따로 기록하도록 세팅하는 것도 좋습니다.

두 번째로 한글 사용자의 경우 구글스프레드시트 설정에서 데이터 언어 형식을 “미국”으로 바꿔줘야 합니다. 파일 > 스프레드시트 설정 > 일반 탭 > 언어 > 미국 으로 설정하면 됩니다. 표시 언어는 한국어 그대로 두어도 됩니다. 함수, 날짜를 인식하는 기본 언어를 영어로 해줘야 하는 것이죠. 이렇게 해야 ‘August’ 등으로 표현되어 들어오는 월/일/연도 표현을 올바르게 인식/파싱할 수 있습니다. IFTTT 에서는 한글 언어 형식으로 보내주는 옵션은 없거든요.

데이터가 들어오는 것을 보면 간단하게 열 전체를 선택하여 표시 형식을 날짜/시간 등으로 바꿔주시면 됩니다. 구글스프레드시트의 메뉴에서 서식 > 숫자에 보면 날짜와 시간을 표시하는 기본 형식이 있는데 마음에 드는 것을 선택하세요. 24시간 형식으로 표시하기 원하는 경우, 서식 > 숫자 > 추가 형식 > 날짜와 시간 형식 더 보기 메뉴에서 찾을 수 있습니다.

실습

위에서 언급한 주의사항을 생각하면서 아래와 같이 작업해보았습니다.

  1. IFTTT 사이트에서 New applet 생성 버튼을 누르고, 트리거 서비스로 This에 Button widget을 선택

  2. 트리거 액션으로 ‘버튼 누름(button press)’를 선택

  3. 이제 액션 서비스로 ‘that’에 Google Drive를 선택. 만약 서비스가 연결 필요하면 연결.

  4. 엑셀모양의 데이터를 차곡차곡 쌓는 게 목적이므로, 액션 옵션 중, ‘행을 추가(Add row to spreadsheet)’를 선택

  5. 구글스프레드시트 파일 이름을 써줌(spread sheet name)

  6. 그리고 Formatted row 는 아래와 같이 써보았습니다. {{OcurredAt}}은 IFTTT에서 보내는 날짜+시간값에 해당하며, “August 11, 2017 at 10:39AM” 과 같은 모양으로 구글스프레드시트에 도착합니다. 그러나 보낼 때부터 SUBSTITUTE 함수를 사용하여 at을 공백으로 대체하고, 이를 각각 날짜와 시간값으로 적절히 인식하여 표시하도록 datevalue 와 timevalue 함수를 사용하였습니다.

=DATEVALUE(SUBSTITUTE("{{OccurredAt}}"," at ", " ")) ||| =TIMEVALUE(SUBSTITUTE("{{OccurredAt}}"," at ", " "))

제대로 된다면, 구글스프레드시트에는 아래와 같이 날짜열과 시간열이 구분되어 예쁘게 들어와야 합니다.

스마트폰에서 위젯 만들기해서 위젯에 위 applet을 바로 구동할 수 있는 위젯버튼을 만들어 넣어줍니다. 아이폰 기준, 홈화면에 추가보다는 위젯을 추천합니다.

추후 활용

어느 정도 데이터가 쌓이면 1행에 제목행을 삽입해도 좋겠고, 간단한 엑셀 수식을 활용하여 특정 범위의 사건 발생을 추적할 수 있겠습니다.

가령 8월 14일 이후로 몇 번이나 통증이 발생했는지 알고 싶다면, =COUNTIF(A1:A1000,">=8/14/2017") 과 같이 쓸 수 있겠죠. A열에 날짜 데이터가 있을 때 8월 14일과 같거나 그보다 큰(14일 이후) 날짜 범위의 셀의 개수를 세는 거죠. 간단합니다. 조금 응용하면 월별 회수 계산, 월별 평균은 물론 가장 통증이 많이 발생하는 시간대를 살펴보기 위한 그래프 그리기 등도 가능하겠네요.

물론 이런 로그를 더욱 편리하게 계산해주는 앱도 찾으면 있겠지만, 좀 더 개인의 필요에 따라 조작할 수 있으면서 추후에 다른 프로그램에 넣어 활용가능한 스프레드시트 데이터를 얻을 수 있다는 점에서 다양한 목적으로 활용 가능하다고 생각합니다. 가령 담배필 때마다 아이폰에서 버튼 한 번씩 누르고, 1년 후에 총 흡연 빈도와 인터벌 등을 그래프로 표현 가능하죠.

 

참고 링크

아래 링크를 참고해주세요.

  1. 샘플스프레드시트
  2. IFTTT 통증기록 Applet 샘플(즉시 사용 가능)

 

(2017년 8월)

 

7 thoughts on “이벤트 신호 발생 – IFTTT로 구글스프레드시트에 기록하기”

  1. 정말 간단하면서도 유용한 글 잘 읽었습니다.
    글을 읽으면서 저도 여쭤볼게 생겼습니다. (다른 ifttt를 구상하다가..^^;;;)
    저는 프로그래밍 언어도 모르는 일반인이며 ifttt가 재밌어서 여러개를 만들어 보고 있…습니다.

    어느 트위터 봇에서 자동 기록되는 글을 검색하면 일정한 포멧의 문장 속에 숫자가 나오게 되는데 이 숫자는 변하는 숫자입니다. 이 숫자가 특정한 숫자보다 높아질경우에만 알림을 받고 싶을 때 구성이 가능할까요?

    예를 들어 “서울 AQI”라는 단어를 트위터에서 검색하면 “미세먼지 트윗 봇‏ @aqi_bot”에서 발생시키는 트윗이 검색됩니다. 트윗 봇이라 문법은 동일하고 AQI 뒤의 숫자만 바뀝니다.

    (검색예)
    서울 AQI:38(좋음)
    PM10:14(좋음) PM25:38(좋음)
    부산 AQI:61(보통)
    PM10:37(좋음) PM25:61(보통)
    인천 AQI:53(보통)
    PM10:18(좋음) PM25:53(보통)

    이때 서울 AQI: 뒤에 나오는 38이라는 숫자가 50 보다 클때만 notification을 받는 구성입니다.
    혼자 머리 싸매고 해보려는데 ifttt 문법도 잘 모르고 프로그래밍도 잘 모르다 보니 어떻게 해야 할지 갑갑하기만 하네요..

    혹시나 읽어보시고 가능하다면 조금만….알려주시면 감사하겠습니다. ^^;;;

    1. 저도 프로그래머가 아니라 어려워보이네요. 해당 트윗이 발행되면 구글스프레드시트로 시간 역순으로 받으시고 최근 트윗에서 정규식 등 이용해서 숫자만 추출해 보여주는 별도의 셀이 있을 때…. 해당 셀의 값이 특정 값을 벗어나면 알림을 발송하는 순서가 일단 생각나는데 들어가는 노력 대비 얻는 게 미미할 거 같습니다 ㅠㅠ

      1. 답변 감사합니다. 말씀하신것처럼 노력 대비 얻는게 미미하다는 생각입니다만.. 일종의 탐구, 취미 생활삼아 해보려구요.

        죄송하지만 구글 스프레드 시트에 자동 기재되는것은 시간순으로만 기재되는것 아닌가요? 최종 글이 위로 오게 배열 시킬수도 있는 것인가요?

        최종글이 위로 오게 한다면 말씀하신것 처럼 알람 발송을 연구해 볼 수 있을것 같네요.

        감사합니다.

      2. 지금 보니 구글스프레드시트에 append만 있고 prepend 옵션이 없네요. 그러나 맨 아래줄이라 하더라도 스프레드시트 안에서 가장 최근의 트윗에서 숫자를 추출한 열이 있고 그 열을 감시하여 표시하는 별도의 연결셀이 있고… 그 셀값을 알림으로 연결하는 게 아주 불가능한 플로우는 아닐 거 같다는 생각이 듭니다 ㅠㅠ 하지만 쉬워보이지는 않네요 ㅜㅜ https://www.octoparse.com/tutorial/extract-twitter-data/?qu 혹시 옥토파스 들어보셨나요? 말씀하심 노티 기능까진 없지만 트윗 추출 데이터를 프로그래머 아닌 사람이 가지고 놀기 좋아보여서 소개드려봅니다.

  2. 친절한 답변 감사합니다. 말씀하신것도 확인해보겠습니다.

  3. 안녕하세요. 서울비님의 정성 가득한 포스팅 잘 읽었습니다.

    그냥커피님과 서울비님의 댓글을 보다가 의견이 있어서 댓글 남깁니다.

    해결할 문제는 크게 3가지 정도가 되는거 같습니다. (1) 스프레드시트에 쌓인 데이터 중에서 필요한 데이터(AQI뒤에 숫자)를 추출하고 (2) 추출한 값이 기준치(50)를 넘는지 체크 (3) 기준치를 넘을 경우 알람을 발생

    제 생각에는 Google App Script를 이용하면 위에 3가지를 모두 해결할 수 있을 것 같습니다. App Script를 활용하려면 기본적인 프로그래밍 실력이 필요하겠지만 자바스크립트와 유사한 문법이고, 가이드 문서가 잘 나와 있어서 예제 보면서 따라해보면 가능할 것 같네요. 아래에 App Script 링크 첨부합니다.

    https://developers.google.com/apps-script/

댓글 남기기