[Notion] Asana의 My Tasks 기능 구현하기

sonhm·2021년 5월 13일
0

내가 오늘 할 일을 알려주는 My Task

업무협업툴로써, 노션만한게 있을까 싶다.

하지만 팀 전체가 내가 만든 노션툴로 갈아타고, 본격적인 업무를 시작하고 보니까 몇몇의 아쉬운 점들이 눈에 띄었다.

몹시나 강력했던 아사나의 My Tasks
1

그 중의 하나가 아사나에서 제공했던 강력한 기능인 My Tasks 였다.
아사나My Tasks는 나에게 할당된 모든 업무 중 오늘 진행 중인 업무를 필터링하여 보여준다.

나에게 할당된 오늘 처리해야 할 일?

여기서 오늘 처리해야 할 일은 다음의 의미를 지닌다.
1. 착수일이 오늘인 업무
2. 과거에 착수 시작하여 오늘 진행 중인 업무
3. 마감일이 지났지만 아직 완료가 되지 않은 업무

내가 하고 싶은 일은 바로 이 My Tasks를 Notion에 옮기는 일이었다.

작업을 하면서 예상치 못한 난관에 부딛혔는데, 문제는 다음과 같았다.
노션의 모든 필터는 date_range의 시작일을 기반으로 필터링을 하기 때문에 원하는 데이터를 추출할 수가 없었다.

2

Formula문을 활용한 노션의 My Tasks 생성과정

때문에, 착수일이 과거이지만 오늘 진행 중인 나의 업무를 필터링하기 곤란한 상황이 발생한다.

대부분의 업무는 착수한 날 종료되지 않으므로, 노션의 기본 필터 기능만으로는 아사나My Tasks를 구현할 수 없었다.

이를 위해 노션의 Formula문을 활용해야 한다.

and(day(start(prop("일정"))) <= day(now()), day(end(prop("일정"))) >= day(now()))

아래는 start와 end 구문을 통해 마감일이 현재 시점보다 미래이고 착수일이 현재 시점보다 과거인 데이터를 추출한 화면이다.
3

이를 통해 착수일이 과거에 시작되었지만 마감일이 도래하지 않은 업무를 오늘 업무로 True체크 할 수 있다.
4

하지만 이 산식에도 헛점이 있다.

마감일이 지났어도 미완료된 업무를 My Tasks에 리턴시킬 수 없다는 것인데, 이럴 경우 마감일이 지났지만 완료되지 않은 업무를 놓치게 된다. (팀 관리자 입장에서 큰 고민이 아닐 수 없다.)

이런 경우, Formula문과 노션에서 제공하는 Filter의 기능 조합으로 해결할 수 있다.

or(and(day(start(prop("일정"))) <= day(now()), day(end(prop("일정"))) >= day(now())), prop("상태*") != "완료")

우선, 좀 전의 산식에서 상태가 "완료"가 아닌 모든 업무를 OR구문으로 계산한다.
5

착수가 시작되었지만 마감일이 오지 않은 업무와 완료상태가 되지 않은 모든 업무의 합집합이 TRUE 체크 되었다.
6

이 상태에서 테이블 필터링을 걸어준다.
7

And 조건으로 다음과 같이 작업을 한다. 계산된 필드의 TRUE값 중에 상태가 완료가 아닌 업무를 필터링한다.
8

오늘 업무에 미완료한 모든 업무 및 오늘 진행되는 업무들이 성공적으로 나열되었다.
9

profile
기발한 기발자

0개의 댓글