서론 : Notion을 접하다.
필자는 2016년 하반기부터 2019년도까지 OneNote 유저였다. 기록에 관심이 많아 이것저것 찾아보다가 Notion을 알게 되었다. 시범적으로 조금씩 사용해보다가 2020년도부터는 본격적으로 Notion을 사용하기 시작했다. Notion은 사용할수록 계속 쓰게 되는 매력이 있는 메모 도구다. [향후 추가 : Notion 선택 - OneNote 4년 사용하다 Notion으로]
다른 사람들은 어떻게 Notion을 사용하는지 찾다 보니 Habit Maker 템플릿을 이용하여 습관을 관리하는 사람들이 보였다. 필자는 최근 2년 동안 아날로그 노트에 Habit Maker를 시도했다. 결과적으로는 항상 스트레스를 받으며 실패했던 좋지 않은 경험이 있어 무시했다. 그러나 이후에 계속 생각이 나면서 다시 도전하고 싶은 마음, 성장하고 싶은 마음이 생겨 Notion으로 도전하게 되었다.
일일이 날짜를 입력하기 힘들다.
Habit Maker를 3개월 동안 사용해보니 생활이 수치화되면서 객관적으로 돌아볼 수 있게 되어 좋았다. 기록하는 것도 미리 만들어진 템플릿에 체크만 하면 되었기에 어렵거나 귀찮지 않았다. 접근성이 좋아 더 많이 사용하게 되었다.
[향후 추가 : Notion 활용기 - Habit Maker 활용하기:주간으로 한눈에, 월간으로 평가하기]
그러나 Date 열의 날짜는 자동으로 생성되지 않는다. 해당 칸에 바로 타이핑이 되는 것도 아니다. 일일이 칸을 클릭하여 날짜를 선택해주거나 클릭 이후 타이핑을 해야 한다. 년 초에 시작할 때는 월말마다 미리 한 달씩 만들어주면 부담 없이 할 수 있겠다고 생각했다. 그러나 3개월 동안 하다 보니 귀찮아졌다. 남은 기간은 9개월을 하나씩 다하려니 또 부담이 되었고 자동으로 할 수 있는 방법이 없는지 고민하고 찾아보았다.
사례 및 정보를 수집 후 나에게 맞게 직접 구현
jamalex가 Notion v3 API를 Python에서 사용할 수 있도록 만든 비공식 Python 패키지가 있다. 패키지를 활용하여 자기가 필요한 기능을 구현한 다른 사람들의 블로그를 찾을 수 있었고, 해당 블로그의 내용을 참조하여 필자에게 필요한 부분을 구현하여 보았다.
Notion API 로 Page,Todo 블록 만들기
Notion API 호출로 TodoBlock 추가하는 방법을 공유합니다. ☕️ 예시) 스벅남은 매일 아침 9시 아아를 마십니다. https://github.com/jamalex/notion-py 활용하였습니다. 준비물 - python v3.5 이상 - token_v2 ✅ 시작 1. 사전설치 notion01.jpg ![n...
velog.io
notion-py로 자동으로 페이지와 테이블 만들기
노션(Notion)을 사용하다 보면 자동으로 페이지, 테이블 등을 생성하고 싶은 경우가 있다. jamalex/notion-py는 Notion v3 API를 지원하기 위해 만들어진 비공식 파이썬 패키지 이다. 이번 글에서는 notion-py를…
medium.com
jamalex/notion-py
Unofficial Python API client for Notion.so. Contribute to jamalex/notion-py development by creating an account on GitHub.
github.com
사전 준비
1. python 3.5 이상 설치 (Notion API가 Python 3.5 이상에서 지원)
2. Notion API 설치 : # pip install notion
3. jupyter 설치 : # pip install jupyter
4. 토큰 확보 : 웹상에 노션에 로그인한 쿠키를 확보하여야 한다.
1) Notion을 Chrome 브라우저로 접속한다. (작업할 Page or Table)
2) F12를 눌러 application Tab을 선택
3) 왼쪽 목록 중에 Cookies를 선택
4) 오른쪽에 나오는 항목 중 token_v2 항목의 value를 복사
토큰까지 확보하였으면 기능을 구현하기 위한 사전 준비가 완료되었다.
원하는 기능을 세분화하여 정리
Notion API로 Habit 테이블에 날짜 자동으로 추가를 위한 단계는 아래와 같다.
1) 토큰을 활용한 Notion Login
2) Notion에서 작업할 대상 정보 가져오기
3) Table에 원하는 날짜와 요일 Insert Test
4) Table 월별 날짜와 요일 Insert 로직 구현
세분화된 기능 구현
1. jupyter notebook 실행 및 .py 생성
2. 기능 구현
먼저 사용할 lib를 import 한다.
from notion.client import NotionClient
from notion.block import CollectionViewBlock
import datetime
1) 토큰을 활용한 Notion Login
# Login
token_v2 = 'a8974256f0b ... 7249d213'
client = NotionClient(token_v2=token_v2)
2) Notion에서 작업할 대상 정보 가져오기
# Notion URL
url ='https://www.notion.so/habit/d859b ... ef440'
# URL GET
cv = client.get_collection_view(url)
3) Table에 원하는 날짜와 요일 Insert Test
# 1 Row 입력 테스트
row = cv.collection.add_row()
row.etc = "insert_TEST"
row.Date = datetime.date(2021,3,19) # Test를 위해 2021년으로 진행!
row.요일 = '금'
위 코드를 실행하면 아래와 같이 추가된다.
row.etc, row.Date, row.요일과 같이 노션에 사용된 열 항목에 대한 이름(컬럼 명)을 지정하여 원하는 값을 넣을 수 있다.
4) Table 월별 날짜와 요일 Insert 로직 구현
# 실제 Insert 로직
dayOfTheWeek = ['월','화','수','목','금','토','일']
year = 2020
month = 6
days = 30
for day in range(1, days + 1):
row = cv.collection.add_row()
date = datetime.date(year,month,day)
row.Date = date
row.요일 = dayOfTheWeek[date.weekday()]
# 확인을 위한 출력 부분
# print(str(year)+'/'+str(month)+'/'+str(day)+'/'+dayOfTheWeek[date.weekday()])
코드를 실행하면 아래와 같이 6월 한 달에 대한 항목이 자동으로 생성되는 것을 확인 할 수 있었다.
월말마다 신경 써야 할 부분 미리 해결하였다.
이렇게 HabitMaker에 날짜와 요일을 자동으로 입력해주는 Python 스크립트를 만들고 2020년의 남은 일을 모두 생성하였다. 월말마다 신경 써야 했던 30일씩 날짜와 요일을 입력하는 일을 약간의 시간을 투자하여 미리 해소하였을 뿐 아니라 매년마다 사용할 수 있다.
지금은 일상의 작은 부분이지만 이런 작은 부분을 하나둘씩 개선해 나아가는 노하우가 쌓여 나만의 효율적인 생활 환경이나 업무 환경을 구성할 수 있을 것이라 기대해 본다.