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

sonhm·2021년 5월 13일
0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

profile
기발한 기발자

0개의 댓글