노코드 자동화를 시작하려는 분이 제일 먼저 묻는 것은 대개 도구입니다. n8n이 좋은가, 자피어가 좋은가, 메이크는 어떤가. 그런데 저희가 네 번 만들어 보면서 시간이 간 곳은 도구를 고르는 데가 아니었습니다. 켜는 데, 권한을 받는 데, 그리고 「됐다」고 나오는데 실제로는 안 된 것을 알아채는 데였습니다.
이 글은 그 네 번의 기록을 순서대로 모은 것입니다. 새로 해 본 것은 없습니다. 각 기록의 자세한 과정은 원래 글에 있고, 여기서는 「처음이라면 무엇부터」에 답하는 데 필요한 것만 뽑았습니다.
저희가 해 본 순서
| 순서 | 한 일 | 막힌 것 | 걸린 것 |
|---|---|---|---|
| 하나 | 윈도우에 n8n 설치, 첫 실행 | 에러처럼 보이는 줄 세 종류 | 첫 실행 130초 |
| 둘 | 구글 시트에 줄이 차면 메일 (Apps Script) | 세 번, 에러 문구가 전부 다름 | 약 1시간 10분 |
| 셋 | n8n 워크플로가 실패하면 메일 | 두 번 안 옴, 이후 「성공인데 실패」 세 종류 | 실패→메일 0.4초 |
| 넷 | 같은 시트 알림을 n8n으로 | 자격증명에서 접음, 공개 주소에서 멈춤 | n8n 쪽 약 25분, 접은 쪽 약 35분 |

돌아보면 순서가 거꾸로였습니다. 설치부터 했는데, 처음에 필요했던 것은 설치가 아니었습니다.
1. 이미 쓰는 도구 안에서 하나를 끝까지
처음 만들 것은 「지금 쓰는 도구 안에서 끝나는 한 가지」가 좋습니다. 저희 기록에서 가장 빨리 결과가 난 것은 시트 안에서 끝나는 Apps Script였습니다. 설치가 없고 구글 계정만 있으면 됩니다.
같은 목표(시트에 줄이 차면 메일 한 통)를 두 방법으로 해 본 네 번째 글의 결론도 같았습니다. 시트 한 장에서 메일 한 통이면 Apps Script입니다. n8n으로 하려니 시트 밖으로 나가는 순간 구글 자격증명과 공개 주소 두 가지가 새로 필요해졌고, 하나에서는 접었고 하나는 넘지 못했습니다.
한 가지 짚어 둡니다. Apps Script는 엄밀히 노코드가 아닙니다. 코드가 20줄이 안 되지만 코드입니다. 그런데 이 20줄에서 막힌 세 번은 전부 코드가 아니라 트리거와 권한 문제였습니다. 「코드를 몰라서 노코드」라면 코드 20줄보다 트리거와 권한을 먼저 익히는 편이 실제로 막히는 곳에 맞습니다.
2. 「실행」 버튼으로 시험하지 않는다
두 도구에서 똑같이 걸린 함정입니다.
Apps Script에서는 편집기의 「실행」을 누르면 이렇게 나왔습니다.
TypeError: Cannot read properties of undefined (reading 'source')
코드가 틀린 것이 아니었습니다. 시트가 편집될 때 구글이 넣어 주는 값을, 버튼으로 돌리면 아무도 넣어 주지 않아서입니다. 그리고 함수 이름을 onEdit으로 지으면 시트가 자동으로 불러 주긴 하는데, 그렇게 불린 함수는 권한을 승인해 놔도 메일을 보내지 못했습니다. 여기서 한참 헤맸습니다. 트리거를 직접 걸고 나서야 메일이 왔고, 코드는 한 글자도 고치지 않았습니다.
Apps Script 공식 문서의 단순 트리거 제한에 이 내용이 그대로 있습니다. 「They can’t access services that require authorization. For example, a simple trigger can’t send an email because the Gmail service requires authorization」.
n8n에서도 같았습니다. 실패 알림을 만들고 편집기의 「Execute workflow」로 일부러 실패시켰더니 아무것도 오지 않았습니다. 버튼으로 돌린 실행은 실패 알림을 부르지 않습니다. 워크플로를 Publish 해서 스스로 돌다가 실패해야 알림이 왔습니다.
n8n 공식 문서의 Error Trigger 설명에도 「You can’t test error workflows when running workflows manually. The Error Trigger only runs when an automatic workflow errors.」라고 적혀 있습니다.
시험은 실제로 쓰는 방식으로 합니다. 시트면 시트에 직접 입력하고, 스케줄이면 스케줄이 돌게 둡니다.
3. 저장과 반영은 다르다
n8n 2.8에서는 저장한 것이 도는 것이 아니었습니다. Publish 한 시점의 워크플로가 돕니다. 설정을 고쳐 저장했는데 다음 실행이 여전히 옛 동작이었고, 화면에서 보이는 차이는 오른쪽 위 버튼이 초록 「Published」에서 노란 점이 붙은 「Publish」로 바뀌는 것뿐이었습니다.
웹훅도 같았습니다. 저장만 하고 주소를 불렀더니 이렇게 왔습니다.
HTTP/1.1 404 Not Found
"The requested webhook \"POST sheet-alert\" is not registered."
응답의 힌트는 「오른쪽 위의 토글」을 켜라고 했는데, 이 버전에는 토글이 없고 그 자리에 Publish 버튼이 있었습니다. 에러 메시지의 안내와 실제 화면이 달랐습니다.
Apps Script에도 비슷한 것이 있었습니다. 함수 이름을 바꿨더니 조용히 멈췄습니다(Script function not found: onEdit). 트리거는 옛 이름을 기억하고 있어서 지우고 다시 걸어야 했습니다.
4. 두 번째로 만들 것은 「실패 알림」
첫 자동화가 돌기 시작하면, 두 번째로 만들 것은 기능이 아니라 실패를 알려 주는 장치입니다. 저희 기록에서 제일 찾기 어려웠던 실패는 실행 기록에 「완료됨」이 찍혔는데 메일이 없는 종류였습니다.
그리고 기본값으로는 실패를 늦게 압니다. Apps Script 트리거의 「트리거 실패 알림 설정」 기본값은 「매일 알림」이라, 멈추면 하루 뒤에 요약 메일이 옵니다. 만들 때 「즉시 알림」으로 바꿔 두는 것이 가장 싼 대책이었습니다.
n8n에서는 실패 알림 워크플로를 따로 만들었습니다. 노드는 두 개(Error Trigger → Send Email)이고, 실패에서 메일 도착까지 0.4초였습니다. 그런데 알림이 오기 시작한 뒤에 반대 문제가 나왔습니다. 실패인데 초록 체크가 뜨는 경우가 세 가지였습니다.
- 없는 주소를 불렀는데, 상대 서버가 오류 대신 화면용 HTML을 200으로 돌려줘서 성공으로 끝남
- 표현식에 없는 값을 넣었는데 에러 대신
null로 넘어감. 같은 실수를 Code 노드에 넣었을 때만 넘어짐 - 노드 설정 「On Error → Continue」를 켜면 404가 나도 실행 기록이 success
그리고 알림 워크플로 자신이 실패했을 때(메일 서버가 꺼져 있을 때), 그 실패는 어디에도 알려지지 않았습니다. 실패 알림은 「노드가 넘어졌을 때」만 알고, 그 밖의 것은 따로 검사해야 합니다.
5. 기본값을 먼저 본다
만들기 전에 바꿔야 했던 기본값이 셋 있었습니다.
| 어디 | 기본값 | 바꿀 값 |
|---|---|---|
| Apps Script 트리거 추가 | 이벤트 「열릴 시」 | 「수정 시」 (또는 프로그램이 넣는 줄이면 「변경 시」) |
| Apps Script 트리거 실패 알림 | 「매일 알림」 | 「즉시 알림」 |
| n8n 워크플로 Timezone | America/New York | 한국 시간 |
첫 번째를 그대로 두면 시트를 열 때마다 도는 트리거가 생깁니다. 세 번째를 그대로 두면 「매일 아침 9시」가 뉴욕 아침 9시입니다.
6. 한 번 발동에 한 번만 보내게
시트 알림 첫 버전은 한 줄을 넣었는데 메일이 세 통 왔습니다. 「수정 시」는 줄이 아니라 칸 단위로 발동해서, 날짜·이름·내용을 Tab으로 넘기며 넣으면 칸마다 한 통이었습니다. 「마지막 칸이 채워질 때만」으로 고쳤더니 이번에는 입력 순서를 바꾸면 한 통도 오지 않았습니다.
결국 「줄이 다 찼고, 옆 칸(D열)이 비어 있으면 보내고, D열에 보낸 시각을 적는다」로 정리했습니다. n8n 실패 알림에서도 1분마다 실패하는 워크플로 둘 때문에 1분에 두 통씩 와서, 같은 방법(워크플로별 마지막 발송 시각을 적어 두고 10분에 한 번만)을 썼습니다. 30분이면 60통이고, 그쯤부터는 아무도 안 읽습니다.
7. 설치형 도구를 쓸 때 미리 알 것
n8n처럼 PC에 까는 도구로 넘어갈 때 알아 둘 것은 셋이었습니다.
켜는 데 시간이 듭니다. npx로 켜니 첫 실행 130초, 두 번째 141초, 이후 91~167초, 재기동 239초였습니다. 「첫 실행만 오래 걸린다」는 말과 달랐습니다. 켤 때마다 기다리는 것이 부담이면 윈도우가 켜질 때 n8n이 같이 뜨게 해 두는 방법이 있습니다.
첫 실행에 에러처럼 보이는 줄이 지나갑니다. deprecated 경고 40줄, 「Python 3 is missing」(파이썬이 있는데도, 윈도우의 python3 별칭 때문), 403 네 번과 데이터베이스 타임아웃. 전부 지나가는 것이었고, 마지막 줄이 「n8n ready on」이면 정상이었습니다.
첫 실행에 암호화 키 파일(.n8n/config)이 자동으로 생깁니다. 저장하는 모든 자격증명이 이 키로 암호화되니, 이 파일을 잃으면 자격증명을 다시 넣어야 합니다. 백업할 때 무엇을 같이 챙겨야 하는지는 따로 정리했습니다.
그리고 PC에서 켠 n8n은 밖에서 보이지 않습니다. 구글 시트의 Apps Script는 구글 서버에서 돌기 때문에 이 PC의 localhost를 부를 수 없는 구조였고, 실패 알림 메일 안의 localhost 링크는 다른 기기에서 열리지 않았습니다. 시트와 연결하려면 n8n을 공개 주소에 올리는 것이 먼저입니다.
8. 시간은 도구 사이의 경계에서 갑니다
네 번째 글에서 n8n이 시트를 직접 읽게 하려니, n8n이 Client ID와 Secret을 달라고 했고, 그 값은 구글 클라우드 콘솔에서 만들어 와야 했습니다. 로그인하자 「400 오류: redirect_uri_mismatch」가 났고, 콘솔에서 주소를 등록하려니 비밀번호를 두 번 더 물었고, 반영까지 「5분에서 몇 시간」이 걸릴 수 있다고 했습니다. 여기서 접었습니다.
n8n 쪽 노드는 두 개였고 2초 안에 메일이 왔습니다. 시간이 간 곳은 노드가 아니라 시트와 n8n 사이 — 자격증명과 주소였습니다. 도구를 고를 때 노드 수나 화면보다 「내 데이터가 있는 곳과 이 도구 사이에 무엇이 필요한가」를 먼저 보시는 편이 낫습니다.
처음이라면 — 저희가 다시 한다면 이 순서
- 지금 쓰는 도구 안에서 끝나는 자동화 하나 (시트라면 Apps Script)
- 시험은 버튼이 아니라 실제 입력으로
- 트리거 실패 알림을 「즉시」로, 두 번째로는 실패 알림 장치
- 중복 발송 막기 (보낸 표시 남기기)
- 그다음에 설치형 도구. 켜는 시간·암호화 키·공개 주소를 미리 계산에 넣고
- 도구 사이를 잇는 일은 자격증명과 주소부터 확인
이 글이 다루지 않은 것
요금 비교는 넣지 않았습니다. 자피어·메이크 같은 다른 노코드 도구는 저희가 이 기록들에서 써 보지 않았습니다.
n8n을 서버에 올린 뒤의 기록은 아직 없습니다. 시트에서 n8n까지의 구간은 실측하지 못했습니다.
모든 수치는 한 PC, 한 계정, 한 번씩 해 본 값입니다. 다른 환경에서 같으리라고는 말하지 않겠습니다.
요약
| 처음에 할 것 | 근거가 된 기록 |
|---|---|
| 쓰던 도구 안에서 하나 | 설치 없음 · 「시트 한 장 → 메일 한 통이면 Apps Script」 |
| 버튼 말고 실제 입력으로 시험 | TypeError·onEdit 권한 · 수동 실행은 실패 알림 안 부름 |
| 저장 ≠ 반영 | Publish 해야 도는 것이 바뀜 · 웹훅 404 |
| 실패 알림 먼저 | 기본 「매일」 · 초록 체크인데 실패 세 종류 |
| 기본값 확인 | 「열릴 시」 · 「매일 알림」 · America/New York |
| 중복 막기 | 한 줄에 세 통 · 1분에 두 통 |
| 설치형은 준비물부터 | 130초 · 에러처럼 보이는 줄 · 암호화 키 · localhost |
도구를 고르는 데는 시간이 거의 들지 않았습니다. 시간이 간 곳은 권한과 트리거, 그리고 「됐다」는 표시를 믿지 않는 법을 배우는 데였습니다.
어디서부터 손대야 할지 막히시면 문의로 알려 주십시오. 지금 하시는 일 중 무엇이 첫 자동화로 맞는지 정도는 같이 짚어 드릴 수 있습니다.
참고 (2026-09-23 확인)
– Google Apps Script 공식 문서 — 트리거 (developers.google.com/apps-script/guides/triggers): 단순 트리거 제한 「They can’t access services that require authorization. For example, a simple trigger can’t send an email because the Gmail service requires authorization」
– n8n 공식 문서 — Error Trigger 노드 (docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/): 「You can’t test error workflows when running workflows manually. The Error Trigger only runs when an automatic workflow errors.」