저도 Notion을 정말 좋아하는데요, 업무부터 개인적인 기록까지 모든 것을 Notion으로 관리하고 있어요. 그런데 가끔 '아, 이 서비스만 Notion에 자동으로 기록되면 정말 편할 텐데!' 하는 순간이 꼭 있더라고요. 공식적으로 API 연동을 지원하지 않는 서비스일 때는 정말 아쉽죠. 😥
그래서 오늘은 이런 아쉬움을 해결해 줄 아주 강력한 방법을 소개해 드리려고 해요. 바로 Google Apps Script(GAS)와 웹훅(Webhook)을 활용하는 건데요, 이름만 들으면 어려워 보이지만 제가 차근차근 알려드릴 테니 걱정 마세요! 이 글만 따라 하면, 여러분도 공식 API가 없는 서비스의 데이터를 내 Notion 데이터베이스에 척척 쌓을 수 있게 될 거예요. 😊

웹훅(Webhook)과 Google Apps Script, 그것이 알고 싶다 🤔
본격적인 실습에 앞서서, 우리가 사용할 두 가지 도구에 대해 간단히 알아볼게요. 뭐랄까, 전투에 나가기 전에 무기를 점검하는 시간이라고 할 수 있죠!
웹훅(Webhook)이란, 특정 이벤트가 발생했을 때 한 서비스가 다른 서비스에게 "이런 일이 일어났어!"라고 자동으로 알려주는 '알림' 같은 거예요. 예를 들어, 온라인 설문지에 새로운 답변이 제출되면(이벤트 발생!), 설문 서비스가 우리가 지정한 주소(웹훅 URL)로 답변 데이터를 실시간으로 보내주는 거죠. '역방향 API'라고 불리기도 한답니다.
Google Apps Script(GAS)는 Google이 제공하는 클라우드 기반의 스크립팅 플랫폼이에요. 쉽게 말해, 구글 서버에서 돌아가는 간단한 자바스크립트 코드라고 생각하면 돼요. 이게 왜 강력하냐면, 별도의 서버나 복잡한 설정 없이 무료로 웹훅을 받아 처리하고, 다른 서비스(바로 우리의 Notion!)로 데이터를 보내는 '중간다리' 역할을 완벽하게 수행할 수 있기 때문이에요.
1단계: Notion 데이터베이스 준비하기 📊
데이터를 쌓을 공간부터 마련해야겠죠? Notion에서 API 키와 데이터베이스 ID를 준비해 봅시다.
- Notion API 키 발급받기
먼저 Notion의 '내 통합' 페이지로 이동해서 '새 통합 만들기'를 클릭하세요. 이름은 'GAS Webhook'처럼 알아보기 쉽게 짓고, '내부 통합'으로 제출하면 API 키가 발급됩니다. 이 키는 비밀번호와 같으니, 안전한 곳에 잘 보관해두세요! - 데이터베이스 생성 및 연결
이제 Notion에 데이터를 기록할 데이터베이스를 만드세요. 저는 'Webhook-Log'라는 이름으로 만들고, 아래처럼 간단한 속성을 추가했어요. 데이터베이스 생성 후, 오른쪽 상단의 '...' 아이콘을 클릭하고 '통합' 메뉴에서 방금 만든 통합 기능을 연결(초대)해줘야 해요. - 데이터베이스 ID 확인하기
데이터베이스 ID는 URL에서 확인할 수 있어요. 데이터베이스 페이지를 전체 화면으로 열면 주소창에 `https://www.notion.so/workspace-name/DATABASE_ID?v=...` 와 같은 형식이 나타나는데, 여기서 `DATABASE_ID` 부분이 바로 우리가 필요한 값입니다.
처음에는 간단하게 텍스트 속성 몇 개로 시작하고, 나중에 필요에 따라 날짜, 선택, 숫자 등 다른 속성을 추가하는 것을 추천해요. 처음부터 너무 복잡하게 만들면 테스트하기가 까다로워질 수 있답니다.
| 속성 이름 (Property Name) | 속성 타입 (Type) | 설명 |
|---|---|---|
| Name | 제목 (Title) | 데이터의 제목 |
| 내용 | 텍스트 (Text) | 웹훅으로 받은 상세 내용 |
| 출처 | 텍스트 (Text) | 데이터를 보낸 서비스 이름 |
2단계: Google Apps Script로 웹훅 만들기 👩💻
자, 이제 중간 다리를 만들 차례예요. Google Apps Script를 열고 코드를 작성해 봅시다.
- 새 스크립트 프로젝트 생성
script.google.com에 접속해서 '새 프로젝트'를 시작하세요. - 코드 작성하기
아래 코드를 복사해서 편집기에 붙여넣으세요. `YOUR_NOTION_API_KEY`와 `YOUR_NOTION_DATABASE_ID` 부분은 방금 1단계에서 얻은 값으로 바꿔주는 것, 잊지 마세요!
📝 Apps Script Code (Code.gs)
function doPost(e) {
const NOTION_API_KEY = 'YOUR_NOTION_API_KEY';
const DATABASE_ID = 'YOUR_NOTION_DATABASE_ID';
const notionUrl = 'https://api.notion.com/v1/pages';
try {
// 웹훅으로 받은 데이터를 파싱합니다.
const webhookData = JSON.parse(e.postData.contents);
// Notion에 보낼 데이터를 구성합니다.
// 이 부분은 여러분이 받는 데이터 형식에 맞춰 자유롭게 수정해야 해요!
const pageTitle = webhookData.title || '새로운 데이터';
const content = webhookData.message || '내용 없음';
const source = webhookData.source || '출처 불명';
const notionPayload = {
'parent': { 'database_id': DATABASE_ID },
'properties': {
'Name': {
'title': [{ 'text': { 'content': pageTitle } }]
},
'내용': {
'rich_text': [{ 'text': { 'content': content } }]
},
'출처': {
'rich_text': [{ 'text': { 'content': source } }]
}
}
};
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'Authorization': 'Bearer ' + NOTION_API_KEY,
'Notion-Version': '2022-06-28'
},
'payload': JSON.stringify(notionPayload)
};
// Notion API로 데이터를 전송합니다.
const response = UrlFetchApp.fetch(notionUrl, options);
// 성공 응답을 반환합니다.
return ContentService.createTextOutput(JSON.stringify({ 'status': 'success', 'response': response.getContentText() })).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
// 에러 발생 시 로그를 남깁니다. (GAS 편집기 -> 실행 내역에서 확인 가능)
Logger.log(error.toString());
return ContentService.createTextOutput(JSON.stringify({ 'status': 'error', 'message': error.toString() })).setMimeType(ContentService.MimeType.JSON);
}
}
- 스크립트 배포하기
코드를 저장한 후, 오른쪽 상단의 '배포' 버튼을 누르고 '새 배포'를 선택하세요. 유형을 '웹 앱'으로 설정하고, '액세스 권한이 있는 사용자'를 '모든 사용자'로 변경해야 외부 서비스가 접근할 수 있어요. 배포 버튼을 누르면 웹 앱 URL이 생성됩니다. 이 URL이 바로 다른 서비스에 입력할 '웹훅 URL'이에요!
생성된 웹 앱 URL은 누구나 호출할 수 있는 공개 주소예요. 따라서 복잡하고 추측하기 어려운 주소로 유지하고, 외부에 함부로 노출하지 않도록 주의해야 합니다.
3단계: 서비스에 웹훅 URL 연결하기 🔗
이제 거의 다 왔습니다! 마지막 단계는 Notion으로 데이터를 보내고 싶은 서비스의 설정에 들어가서 웹훅 기능을 활성화하는 거예요.
대부분의 서비스는 '설정(Settings)'이나 '개발자(Developer)', 'API' 메뉴에서 웹훅 관련 옵션을 찾을 수 있습니다. '웹훅 추가(Add Webhook)' 버튼을 누르고, 'Payload URL' 또는 'Endpoint URL' 이라는 입력란에 방금 GAS에서 발급받은 웹 앱 URL을 붙여넣으세요. 그리고 어떤 이벤트가 발생했을 때 웹훅을 보낼지 선택하면 모든 설정이 끝납니다!
이제 해당 서비스에서 이벤트가 발생할 때마다, 데이터가 GAS를 거쳐 Notion 데이터베이스에 차곡차곡 쌓이는 것을 확인하실 수 있을 거예요. 정말 신기하지 않나요? 😄
오늘의 핵심 요약
자주 묻는 질문 ❓
오늘은 Google Apps Script와 웹훅을 이용해 Notion의 가능성을 한 단계 확장하는 방법을 알아봤습니다. 처음에는 조금 복잡해 보일 수 있지만, 한번 성공하고 나면 어떤 서비스든 Notion으로 연결할 수 있다는 자신감이 생길 거예요. 여러분만의 멋진 자동화 워크플로우를 만들어보세요! 궁금한 점이 있다면 언제든지 댓글로 남겨주세요~ 😊
'돈 버는 도구들' 카테고리의 다른 글
| 자동화 툴, 뭘 써야 할까? (4) | 2025.07.04 |
|---|---|
| Trello/Asana 카드, 왜 다음 단계로 안 넘어갈까? (2) | 2025.07.03 |
| Zapier 유료 플랜, 혹시 돈 낭비라고 생각하시나요? (3) | 2025.07.02 |
| 재택근무 중 자꾸만 열어보는 유튜브, 이젠 안녕 (6) | 2025.07.02 |
| 매일 쏟아지는 이메일, 어떻게 관리하고 계신가요? (3) | 2025.07.01 |