공강 시간 짬짬이 행정을 처리해야 하는 우리 선생님들은 하나의 Task를 처리하기 위해 해당 공문을 수 차례 ~ 수십 차례 다시 열어봐야만 하는 슬픈 신세죠 😢
상황이 이렇다보니 공문 확인을 위해 매번 에듀파인에 접속하기보다는 해당 공문을 오프라인으로 저장해두는 게 편할 때가 많아요.
하지만 덮어놓고 다운로드만 하다보면 다운로드 폴더는 이모양 이꼴이 되고 맙니다.
이거 뭐 알아보겠나요?
그래서 만들어봤어요. 공문을 다운로드하면 공문 제목을 분석하여 새로운 폴더를 생성하고 → 해당 폴더 안에 공문 본문과 첨부파일을 모두 아카이빙해주는 공문 분류 + 아카이빙 시나리오!
2. 실습하기!
시나리오 다이어그램
시나리오 흐름
공문 저장 버튼을 눌러 구글 드라이브의 A폴더에 저장한다.
구글 앱스 스크립트가 폴더를 감시하다가 새로운 파일 추가가 감지되면 메이크에 파일 정보를 웹훅으로 전송하여 트리거를 발동한다.
넘겨진 파일 정보를 n개의 번들로 분리한다.
Make의 Text parser - Match pattern 모듈이 파일 제목을 분할한다.
학교명-문서번호
제목
발신기관명
해당 파일을 저장할 새 폴더를 생성한다.
폴더명 : [학교명-문서번호]제목(발신기관명)
A폴더를 탐색하여 학교명-문서번호가 일치하는 파일을 탐색한다.
탐색한 파일을 5에서 생성한 새 폴더에 옮긴다.
시나리오 제작 전에 미리 준비하세요!
구글 드라이브 데스크탑 버전 설치
→ 윈도우 탐색기와 구글 드라이브가 호환되어 공문을 저장할 때 구글 드라이브의 특정 폴더를 경로로 지정할 수 있음.
‣
공문을 저장할 A폴더와, 분류된 공문을 보관할 B폴더 만들기
시나리오 제작!
⭐️ 주의! 시나리오가 자동 저장 되지 않으니 중간중간 save를 눌러주세요!
1. Webhook(시나리오의 트리거)
웹훅이란?
❓
웹훅(Webhook)은 애플리케이션 간에 실시간으로 데이터를 주고받을 수 있게 해주는 통신 방식입니다.
특정 이벤트가 발생했을 때 지정된 URL로 자동으로 데이터를 전송하는 방식으로 작동합니다.
Make에서 웹훅 모듈을 생성하면 해당 웹훅 모듈로 정보를 전송하는 링크가 생성되고 → 우리는 그 링크를 실행시킴으로써 시나리오를 작동시킬 수 있는 거예요
본 시나리오에서는 구글 드라이브의 특정 폴더에 파일이 생성되면 구글 앱스스크립트가 그것을 감지하여 웹훅 링크를 실행하도록 구성했어요.
구글 앱스스크립트는 또 뭐냐고요? 걱정 마세요. 제가 다 준비해놓았으니 따라하시기만 하면 돼요 🙂
구글 드라이브 특정 폴더를 탐색하여 트리거를 발동시켜 줄 앱스 스크립트 설정 방법
‣ → 접속
좌측 새 프로젝트 클릭
기존 코드를 모두 선택한 후 삭제
Ctrl+A 를 이용해서 모두 선택하면 깔끔하게 지울 수 있겠죠?
아래 코드를 일부 수정한 후 통째로 복사
복사할 코드 및 수정 방법
수정해야 할 영역은 노란색 음영이 들어가있어요!
*주의 : 수정할 때 좌우 따옴표를 지우면 안 돼요!
감시할 Google Drive 폴더의 ID
→ 구글 드라이브 폴더 URL에서 https://drive.google.com/drive/folders/이 부분을 복사해서 붙여넣으면 돼요
Make에서 생성한 Webhook URL
→ 웹훅 모듈에서 Copy address to clilboard를 클릭하여 복사한 후 붙여넣으면 돼요
기존 코드가 있던 자리에 4에서 복사한 코드 붙여넣기
저장, 실행을 차례로 클릭
권한 검토 클릭 후 이어지는 화면에서 모든 항목을 허용
권한 검토 클릭
모든 항목 허용한 후 계속 클릭
마지막으로 스크립트 저장 버튼 한 번 더 눌러주면 트리거 준비 완료!
2. Flow Control의 Iterator
앱스스크립트는 탐색한 폴더 안에 있는 복수의 파일 정보(파일 ID, 파일명, URL 등등)를 배열(Array)이라는 형태로 묶어 전송합니다.
Iterator는 배열 안에 들어있는 여러 파일 정보를 차례대로 처리하여 n개의 번들이라는 형태로 다시 뱉어냅니다.
3. Text parser의 Match pattern
에듀파인에서 저장하는 공문과 첨부파일의 이름은 모두 [학교명-문서번호 발신기관] (본문 or 첨부) 제목의 형태로 정형화되어 있습니다.
Match pattern 모듈은 이 정형화된 형태를 분석하여
$1 → 학교명-문서번호
$2 → 발신기관
$3 → 제목
위 3가지 요소로 분할합니다.
Pattern 부분에는 아래의 정규식을 그대로 붙여넣어주세요.
Text에는 Iterator의 아웃풋 중 name을 매핑해주세요
4. 구글 드라이브의 Create a Folder
⚠️
(주의) 구글 드라이브, 지메일 등 구글 관련 모듈은 로그인만 하면 자동으로 메이크와 연결되어요. 하지만 개인 구글 계정을 연결하면 오류가 날 거예요.
해결 방법1(추천) : 개인 계정 말고 학교나 교육청 구글 워크스페이스 계정을 연결한다.
해결 방법2 : 개인 계정을 써야겠다면 메이크 공식 기술 파트너 푸르공님의 영상을 참조하여 문제를 해결한다.
‣
3번 단계에서 추출한 $1, $2, $3을 이용하여 [학교명-문서번호]제목(발신기관) 형태로 조립합니다.
함수 분석
[{{trim(3.$1)}}]
→ 학교명-문서번호 앞 뒤의 공백을 잘라내고 대괄호를 씌워 [학교명-문서번호] 형태로 완성합니다.
{{3.$3}}
→ 제목을 그대로 입력합니다.
{{if(3.$2; "(" + 3.$2 + ")"; )}}
→ 내부기안의 경우 발신기관이 존재하지 않을 수 있으므로 조건문으로 작성합니다. 발신기관이 있다면 (발신기관)을 반환하고, 발신기관이 없다면 아무 것도 반환하지 않습니다.
5. 구글 드라이브의 Search for Files/Folders
공문을 마구 저장해둔 폴더를 탐색해서 안에 있는 파일 중 $1 → 학교명-문서번호 가 포함된 파일을 탐색합니다.
Choose a folder : 탐색기를 이용하여 내가 공문을 저장하는 구글드라이브 폴더를 지정하세요.
Query : 3번 Match Pattern 모듈에서 추출한 $1 값을 매핑하세요.
나머지 설정은 캡쳐를 보고 따라하세요.
6. 구글 드라이브 Move a File/Folder
5번에서 탐색한 파일을 4번에서 만든 새폴더에 옮겨주는 모듈이에요.
Flle ID : 5번 Search for Files/Folders모듈에서 추출한 file ID를 매핑하세요.
New Folder Location : 4번 Create a Folder모듈에서 생성한 Folder Id를 매핑하세요.
→ 주의! 보라색 Map 토글이 꺼져있다면 켜고 작업해주세요!
7. 마지막으로 저장 버튼 누른 후 Immediately as data arrives 토글을 ON!