강동민
텔레그램 봇 · 구글 스프레드시트 · 앱스스크립트

시트에 새 줄이 들어오면
텔레그램으로 알림 받기

구글 스프레드시트에 새 주문이 한 줄 쌓이면, 내 텔레그램으로 곧바로 알림이 옵니다. 시트를 계속 들여다볼 필요가 없습니다. 봇을 만들고, 앱스스크립트로 시트와 봇을 잇습니다. 코드는 한 줄도 안 씁니다. 붙여넣고 두 곳만 바꿉니다.

약 30분 구글 계정 하나 · 텔레그램 하나 설치 없음 코드 지식 불필요 실제 화면 16장

시작하기 전에 준비할 것

이렇게 이어집니다. 시트에 새 줄이 생기면(감지) 앱스스크립트가 그 줄을 읽어 텔레그램 봇에게 메시지 하나를 보냅니다(발송). 봇은 그 메시지를 내 폰으로 전해 줍니다(도착). 이 세 마디(감지 → 발송 → 도착)가 알림 연동의 전부입니다. 이 가이드는 그 흐름을 한 번 손에 익히는 것이 목적입니다.
주문 알림은 하나의 예입니다. 핵심은 시트의 변화를 텔레그램으로 흘려보낼 수 있다는 것입니다. 재고가 특정 수량 아래로 떨어질 때, 예약이 들어올 때, 설문 응답이 도착할 때, 무엇이든 같은 방법입니다. 시트 제목과 알림 문구만 바꾸면 됩니다. 이 흐름을 익히면 나머지는 문구를 바꾸는 일입니다.
1

텔레그램에서 알림 봇 만들기

알림을 보내 줄 봇을 하나 만듭니다. 봇은 텔레그램이 정한 방법대로 BotFather라는 공식 봇에게 부탁해서 만듭니다.

  1. 텔레그램 검색창에 @BotFather를 치고, 파란 체크가 붙은 BotFather를 엽니다.
  2. 아래 시작(Start)을 누른 뒤, 대화창에 /newbot을 보냅니다.
  3. 봇 이름을 묻습니다. 아무 이름이나 적습니다(예: 주문 알림).
  4. 봇 아이디를 묻습니다. 영문으로 끝이 bot이어야 합니다(예: my_order_alert_bot). 이미 쓰는 이름이면 다른 걸 넣으라고 합니다.

다 되면 BotFather가 축하 메시지와 함께 토큰을 줍니다. 123456789:AAE...처럼 생긴 긴 문자열입니다. 이 토큰이 봇을 움직이는 열쇠입니다. 길게 눌러 복사해 둡니다.

BotFather에서 newbot으로 봇을 만들고 토큰을 받은 화면
[ 화면 ]
봇 생성 · 토큰 받기BotFather 대화에서 /newbot 뒤 이름·아이디를 정하고, 토큰(123456789:AAE...)이 나온 화면. 토큰 줄에 주황 테두리, 실제 토큰 값은 흐리게.
그림 1. BotFather가 준 토큰을 복사해 둡니다. 이 토큰은 남에게 보이면 안 됩니다.
토큰은 비밀번호입니다. 토큰을 아는 사람은 이 봇으로 아무 메시지나 보낼 수 있습니다. 화면 공유나 캡처에서 가리고, 남에게 주지 않습니다.
여기까지 확인

BotFather가 준 토큰(숫자:영문 꼴)을 복사해 두었습니다.

2

봇에게 먼저 말 걸기

텔레그램에는 규칙이 하나 있습니다. 봇은 내가 먼저 말을 건 사람에게만 메시지를 보낼 수 있습니다. 그래서 내가 봇에게 먼저 한마디 보내 둬야 합니다.

  1. 텔레그램 검색창에 방금 만든 봇의 아이디(@my_order_alert_bot)를 쳐서 엽니다.
  2. 아래 시작(Start)을 누릅니다. 그리고 아무 글자나 하나 보냅니다(예: 안녕).
내가 만든 봇과의 대화에서 시작을 누르고 인사를 보낸 화면
[ 화면 ]
봇에게 첫 메시지내가 만든 봇과의 대화. 하단 Start 버튼을 누르고 "안녕"을 보낸 상태. 보낸 메시지에 주황 테두리.
그림 2. 봇에게 아무 말이나 한마디 보냅니다. 이 한마디가 다음 단계에서 내 주소(chat_id)를 알아내는 실마리가 됩니다.
왜 이걸 먼저 하나요? 봇이 나에게 알림을 보내려면 "누구에게 보낼지"를 알아야 합니다. 그 주소가 chat_id입니다. 내가 봇에게 말을 걸면 그 기록에 내 chat_id가 남고, 6단계에서 그 값을 꺼내 씁니다.
여기까지 확인

내가 만든 봇과의 대화에 내가 보낸 메시지 하나가 보입니다.

3

주문 표 만들기

알림을 만들 재료, 즉 주문이 쌓일 표를 만듭니다. 브라우저 주소창에 sheets.new를 치고 Enter를 누릅니다. 빈 구글 스프레드시트가 새로 열립니다.

맨 윗줄(1행)에 제목 다섯 칸을 넣습니다. A1 칸을 누르고 아래 한 줄을 복사해 붙여넣으면, 다섯 칸에 한 번에 나뉘어 들어갑니다.

주문일시 주문자 품목 수량 메모

이 표가 알림의 재료입니다. 2행부터 실제 주문이 한 줄씩 들어오고, 코드는 맨 아래 줄을 읽어 알림을 만듭니다.

행주문일시주문자품목수량메모
22026-08-22 14:03김민수아메리카노2덜 뜨겁게
32026-08-22 14:07이서연카페라떼1
새 구글 스프레드시트 1행에 다섯 개의 제목이 들어간 화면
[ 화면 ]
제목 줄을 넣은 시트새 스프레드시트 1행에 주문일시·주문자·품목·수량·메모 다섯 칸이 들어간 상태. 1행에 주황 테두리.
그림 3. 1행에 다섯 제목이 들어갔습니다. 주문은 2행부터 쌓입니다.
제목은 자유입니다. 코드가 1행 제목을 그대로 읽어 "제목: 값" 형태로 알림을 만듭니다. 예약이면 예약일시 이름 인원으로 바꾸면 알림 문구도 따라 바뀝니다.
여기까지 확인

스프레드시트 1행에 다섯 칸 제목(주문일시 … 메모)이 들어 있습니다.

4

앱스스크립트 편집기 열기

시트와 봇을 이어 줄 코드를 넣을 곳을 엽니다. 위쪽 메뉴에서 확장 프로그램을 누르고 Apps Script를 고릅니다.

확장 프로그램 메뉴를 열어 Apps Script를 고르는 화면
[ 화면 ]
확장 프로그램 > Apps Script상단 확장 프로그램 메뉴를 편 상태. "Apps Script" 항목에 주황 테두리.
그림 4. 확장 프로그램 > Apps Script를 누릅니다.

새 탭이 하나 뜹니다. 이것이 코드를 넣는 편집기입니다. 왼쪽에 Code.gs라는 파일이 있고, 가운데 코드 칸에 기본 코드(function myFunction() { })가 들어 있습니다.

앱스스크립트가 뭔가요? 구글 스프레드시트에 무료로 딸려 오는 자동화 도구입니다. 시트를 조종하고, 인터넷의 다른 서비스(여기서는 텔레그램)에 요청을 보내는 작은 프로그램을 브라우저 안에서 만듭니다. 언어는 자바스크립트지만, 우리는 붙여넣기만 합니다.
여기까지 확인

새 탭에 편집기가 떴고, 왼쪽에 Code.gs 파일이 보입니다.

5

알림 코드 붙여넣고 토큰 넣기

가운데 코드 칸의 기본 코드를 모두 지웁니다. 코드 칸을 한 번 누르고 Ctrl + A(맥은 ⌘ + A)로 전부 선택한 뒤 Delete로 지웁니다.

그 자리에 아래 코드를 붙여넣습니다. 오른쪽 복사 버튼을 누른 다음, 빈 칸에서 Ctrl + V로 붙입니다. 코드 내용은 읽지 않아도 됩니다.

Code.gs 전체 코드 읽지 않아도 됩니다. 오른쪽 복사만 누르세요.
// 스프레드시트 -> 텔레그램 알림 // 원리: 시트가 바뀌면(트리거) 텔레그램 봇에게 요청을 한 번 보내(UrlFetchApp) 내 폰으로 메시지가 온다. // 고칠 곳은 딱 두 줄이다. 아래 BOT_TOKEN 과 CHAT_ID. var BOT_TOKEN = '여기에_봇_토큰_붙여넣기'; // BotFather가 준 토큰 var CHAT_ID = '여기에_내_chat_id_붙여넣기'; // getMyChatId()를 실행해 얻는다 // 텔레그램으로 글 한 덩이를 보낸다. 모든 알림이 이 함수 하나를 지난다. function sendTelegram(text) { var url = 'https://api.telegram.org/bot' + BOT_TOKEN + '/sendMessage'; UrlFetchApp.fetch(url, { method: 'post', payload: { chat_id: CHAT_ID, text: text }, muteHttpExceptions: true }); } // 내 chat_id 찾기. 텔레그램에서 봇에게 아무 말이나 한 번 보낸 뒤 이 함수를 실행한다. // 실행 로그에 숫자가 찍힌다. 그 숫자를 위 CHAT_ID 자리에 넣는다. function getMyChatId() { var url = 'https://api.telegram.org/bot' + BOT_TOKEN + '/getUpdates'; var res = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); var data = JSON.parse(res.getContentText()); var list = data.result || []; if (list.length === 0) { Logger.log('메시지가 아직 안 보입니다. 텔레그램에서 봇에게 아무 말이나 보낸 뒤 다시 실행하세요.'); return; } var last = list[list.length - 1]; var msg = last.message || last.edited_message || last.channel_post; Logger.log('내 chat_id: ' + msg.chat.id); } // 시트 맨 아래 한 줄을 제목과 짝지어 텔레그램으로 보낸다. function notifyLastRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; var lastRow = sheet.getLastRow(); if (lastRow < 2) return; // 제목 줄만 있으면 보낼 것이 없다 var width = sheet.getLastColumn(); var head = sheet.getRange(1, 1, 1, width).getValues()[0]; var row = sheet.getRange(lastRow, 1, 1, width).getValues()[0]; var lines = ['새 주문이 들어왔습니다']; for (var i = 0; i < head.length; i++) { if (head[i] === '') continue; var value = row[i]; if (Object.prototype.toString.call(value) === '[object Date]') { // 날짜 칸은 보기 좋게 다듬는다 value = Utilities.formatDate(value, Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm'); } lines.push(head[i] + ': ' + value); } sendTelegram(lines.join('\n')); } // 알림을 한 번 보내 시험한다. 이 함수를 실행하면 지금 시트의 마지막 줄이 텔레그램으로 온다. function testAlert() { notifyLastRow(); } // 시트가 편집되면 자동으로 마지막 줄 알림을 보낸다. 설치형 트리거가 이 함수를 부른다. function onSheetChange(e) { notifyLastRow(); }

붙여넣은 뒤 딱 한 곳만 고칩니다. 맨 위 두 줄 중 첫 줄의 따옴표 안을, 1단계에서 복사한 봇 토큰으로 바꿉니다.

var BOT_TOKEN = '123456789:AAE...여기에_내_토큰...';

바로 아래 CHAT_ID 줄은 다음 단계에서 채웁니다. 지금은 그대로 둡니다. 위쪽 저장 아이콘(디스크 모양)이나 Ctrl + S로 저장합니다.

Code.gs에 알림 코드를 붙여넣고 첫 줄에 봇 토큰을 넣은 화면
[ 화면 ]
코드 붙여넣고 토큰 넣기코드 칸에 코드가 가득 찬 상태. 맨 위 var BOT_TOKEN 줄의 따옴표 안에 실제 토큰이 들어간 모습. BOT_TOKEN 줄에 주황 테두리, 토큰 값은 흐리게.
그림 5. 맨 위 BOT_TOKEN 줄에 내 토큰을 넣고 저장했습니다.
여기까지 확인

코드가 가득 차 있고, 맨 위 BOT_TOKEN 줄에 내 토큰이 들어가 있으며, 저장했습니다.

6

내 chat_id 알아내서 넣기

봇이 나에게 보낼 주소, chat_id를 알아냅니다. 코드 안에 그걸 알려 주는 함수(getMyChatId)가 이미 들어 있습니다.

편집기 위쪽 가운데의 함수 고르는 칸(지금은 다른 함수 이름이 보입니다)을 눌러 getMyChatId를 고릅니다. 그리고 그 왼쪽의 실행(▶)을 누릅니다.

편집기 위쪽 함수 고르는 칸과 실행 버튼
[ 화면 ]
함수 고르는 칸과 실행 버튼편집기 위쪽 툴바. 왼쪽부터 실행(▶), 디버그, 함수 고르는 칸(getMyChatId)이 있고 그 묶음에 주황 테두리.
그림 6. 함수 칸에서 getMyChatId를 고르고, 그 왼쪽 실행(▶)을 누릅니다.

처음 실행하면 권한 승인 절차가 한 번 나옵니다. 화면이 좀 무섭게 생겼지만 정상이고, 맨 처음 딱 한 번만 하면 됩니다. 아래 네 화면을 순서 그대로 따라갑니다.

(1) 편집기 안에 "승인 필요" 창이 뜹니다. 오른쪽 권한 검토를 누릅니다.

승인 필요 창에서 권한 검토를 누르는 화면
[ 화면 ]
승인 필요 → 권한 검토편집기 위에 뜬 '승인 필요' 작은 창. 오른쪽 파란 '권한 검토' 버튼에 주황 테두리.
그림 7. 권한 검토를 누릅니다. 새 창이 하나 열립니다.

(2) 새 창에 "Google에서 확인하지 않은 앱"이라는 경고가 뜹니다. 왼쪽 아래 고급을 누릅니다.

확인되지 않은 앱 경고에서 고급을 누르는 화면
[ 화면 ]
확인되지 않은 앱 → 고급'Google에서 확인하지 않은 앱' 화면. 왼쪽 아래 '고급' 링크에 주황 테두리. 개발자 이메일은 흐리게.
그림 8. 왼쪽 아래 고급을 누릅니다.
이 경고는 정상입니다. 내가 방금 만든 개인 스크립트라 구글 심사를 안 거쳤을 뿐입니다. 남의 앱이 아니라 내 것이니 넘어가도 됩니다. 계정 언어에 따라 영어로 떠도(Advanced 등) 버튼 위치와 순서는 똑같습니다.

(3) 고급을 누르면 아래에 "(내 프로젝트 이름)(으)로 이동(안전하지 않음)"이라는 줄이 나타납니다. 그것을 누릅니다.

고급을 펼쳐 프로젝트로 이동 링크를 누르는 화면
[ 화면 ]
프로젝트로 이동고급이 펼쳐진 상태. 아래 '(제목 없는 프로젝트)로 이동(안전하지 않음)' 링크에 주황 테두리. 개발자 이메일은 흐리게.
그림 9. 아래 (내 프로젝트)로 이동을 누릅니다.

(4) 이 스크립트에 어떤 권한을 줄지 고르는 화면이 나옵니다. 맨 위 모두 선택을 체크하고, 아래로 내려 계속을 누릅니다.

동의 화면에서 모두 선택을 체크한 화면
[ 화면 ]
모두 선택 체크 → 계속권한 동의 화면. 맨 위 '모두 선택' 체크박스가 켜진 상태에 주황 테두리. 아래 '계속' 버튼을 누른다.
그림 10. 모두 선택을 체크한 뒤 아래 계속을 누릅니다.
모두 선택을 체크해야 계속이 눌립니다. 체크하지 않으면 계속 버튼이 회색으로 안 눌립니다. 이 권한은 내 스크립트가 내 시트를 읽어 텔레그램에 보내는 데 쓰는 것입니다.

승인이 끝나면 실행이 완료되고, 편집기 아래쪽에 실행 로그가 펼쳐집니다. 거기에 내 chat_id: 812345678처럼 숫자 한 줄이 찍힙니다.

실행 로그에 내 chat_id 숫자가 찍힌 화면
[ 화면 ]
실행 로그에 뜬 chat_id편집기 아래 실행 로그에 '내 chat_id: (숫자)'가 찍힌 화면. 그 숫자 줄에 주황 테두리.
그림 11. 로그에 찍힌 숫자가 내 chat_id입니다. 이 숫자를 복사합니다.

그 숫자를 코드 맨 위 두 번째 줄, CHAT_ID의 따옴표 안에 넣습니다.

var CHAT_ID = '812345678';

Ctrl + S로 저장합니다. 이제 봇 토큰(누구를 통해 보내나)과 chat_id(누구에게 보내나)가 다 채워졌습니다.

로그가 비었나요? 메시지가 아직 안 보입니다가 찍히면, 2단계의 "봇에게 말 걸기"를 안 한 것입니다. 텔레그램에서 봇에게 아무 말이나 한마디 보낸 뒤 getMyChatId를 다시 실행합니다.
여기까지 확인

코드 맨 위 CHAT_ID 줄에 로그에서 본 숫자가 들어가 있고, 저장했습니다.

7

알림 한 번 시험하기

진짜로 알림이 오는지 눌러 봅니다. 코드는 늘 시트의 맨 아래 줄을 읽어 보내니, 시험용 주문이 한 줄 있어야 합니다. 스프레드시트 탭으로 가서 2행에 아무 주문이나 한 줄 적어 둡니다(예: 2026-08-23 11:20 김민수 아메리카노 2 덜 뜨겁게).

다시 편집기로 와서, 함수 칸에서 이번엔 testAlert를 고르고 실행(▶)을 누릅니다. 6단계에서 이미 권한을 승인했으니 이번엔 승인 창이 안 뜹니다.

실행이 끝나면 잠시 뒤 텔레그램에 알림이 도착합니다. 시트 마지막 줄이 "새 주문이 들어왔습니다"와 함께 옵니다.

텔레그램에 새 주문 알림이 도착한 화면
[ 화면 ]
텔레그램에 도착한 알림봇과의 대화에 '새 주문이 들어왔습니다 / 주문일시 / 주문자: 김민수 ...' 메시지가 온 화면. 그 메시지에 주황 테두리.
그림 12. 봇이 시트의 마지막 줄을 그대로 읽어 보냈습니다. 여기까지면 연결은 다 된 것입니다.
여기까지 확인

텔레그램의 봇 대화에 "새 주문이 들어왔습니다" 알림이 도착했습니다.

8

자동으로 오게 트리거 걸기

지금은 버튼을 눌러야 알림이 옵니다. 이제 시트가 바뀌면 저절로 오게 만듭니다. 이 "언제 실행할지" 규칙을 트리거라고 합니다.

편집기 맨 왼쪽 세로줄에서 알람시계 모양(트리거)을 누릅니다. 그 위에 시계 아이콘(프로젝트 기록)이 하나 더 있으니 헷갈리지 않게, 아래쪽 알람시계를 고릅니다. 아이콘에 마우스를 올리면 이름표가 뜹니다.

편집기 왼쪽 세로 메뉴의 트리거 아이콘
[ 화면 ]
왼쪽의 트리거(알람시계)편집기 왼쪽 세로 메뉴가 이름표와 함께 펼쳐진 상태. '트리거' 항목에 주황 테두리(위의 '프로젝트 기록'과 구분).
그림 13. 왼쪽 세로줄에서 트리거(알람시계)를 누릅니다.

트리거 화면이 열립니다. 오른쪽 아래 파란 트리거 추가 버튼을 누릅니다.

트리거 화면의 오른쪽 아래 트리거 추가 버튼
[ 화면 ]
트리거 추가 버튼트리거 목록 화면(아직 비어 있음). 오른쪽 아래 파란 '트리거 추가' 버튼에 주황 테두리.
그림 14. 오른쪽 아래 트리거 추가를 누릅니다.

창이 뜹니다. 네 칸 중 세 칸을 이렇게 맞춥니다(나머지는 그대로 둡니다).

  • 실행할 함수 선택: onSheetChange
  • 이벤트 소스 선택: 스프레드시트에서
  • 이벤트 유형 선택: 변경 시
트리거 추가 창에서 onSheetChange와 변경 시를 고른 화면
[ 화면 ]
트리거 설정트리거 추가 창. 함수 'onSheetChange', 소스 '스프레드시트에서', 유형 '변경 시'로 맞춘 상태. 이벤트 유형 칸에 주황 테두리.
그림 15. onSheetChange를 변경 시에 겁니다.

아래 저장을 누릅니다. 권한 창이 다시 뜨면 6단계와 같은 순서로 넘어갑니다(대개 이미 승인해서 안 뜹니다).

왜 시트에서 바로 안 하고 트리거인가요? 코드는 평소엔 잠들어 있습니다. 트리거는 "시트가 바뀌면 깨워라"라는 알람입니다. 이 알람을 걸어 둬야 내가 편집기를 안 봐도 알림이 갑니다.
여기까지 확인

트리거 목록에 onSheetChange · 변경 시 한 줄이 생겼습니다.

9

새 주문 넣어 자동 알림 확인

마지막으로, 진짜 새 주문처럼 시트에 한 줄을 더 적어 봅니다. 스프레드시트 탭으로 돌아가 3행에 새 주문을 한 줄 채웁니다(예: 2026-08-23 11:35 이서연 카페라떼 1).

잠시 뒤(보통 몇 초에서 십여 초), 버튼을 누르지 않았는데도 텔레그램에 그 주문 알림이 옵니다.

시트에 새 줄을 넣자 텔레그램에 자동으로 알림이 온 화면
[ 화면 ]
자동으로 온 알림왼쪽은 시트 3행에 이서연 주문이 채워진 상태, 오른쪽은 그 주문이 텔레그램에 자동으로 도착한 화면. 둘 다 주황 테두리.
그림 16. 시트에 줄이 들어가자 알림이 저절로 왔습니다. 연동이 완성됐습니다.

끝났습니다

시트에 새 주문이 들어올 때마다 텔레그램으로 알림이 옵니다. 시트를 지켜볼 필요가 없어졌습니다. 알림 문구나 조건을 바꾸고 싶으면 코드를 고친 뒤 저장만 하면 됩니다. 트리거는 이미 걸려 있으니 다시 안 만들어도 됩니다.


원리 한 장

따라 하면서 만진 네 조각이 알림 연동의 전부입니다. 이름만 알아 두면, 다음에 무엇을 바꿔야 할지 스스로 압니다.

봇 토큰은 열쇠입니다. "어느 봇을 통해 보내는가"를 정합니다. chat_id는 주소입니다. "누구에게 보내는가"를 정합니다. 이 둘이 있어야 sendMessage라는 한 번의 인터넷 요청(코드의 UrlFetchApp.fetch)이 성립합니다. 그 요청을 언제 보낼지를 정하는 것이 트리거입니다. 정리하면, 트리거가 시트 변화를 감지해서(언제) sendMessage로 봇에게 보내면(어떻게) 그 봇이 chat_id 주인에게 전합니다(누구에게).

그래서 알림을 바꾸는 일은 늘 이 넷 중 하나를 만지는 일입니다. 보내는 문구를 바꾸려면 코드의 lines 부분을, 보내는 조건을 바꾸려면(예: 수량이 10 이상일 때만) notifyLastRow 안에 if 한 줄을, 받는 사람을 바꾸려면 CHAT_ID를 바꿉니다. 방법은 그대로입니다.


자주 막히는 곳

알림이 안 와요

가장 흔한 원인은 두 곳입니다. 하나, 2단계에서 봇에게 먼저 말을 안 걸어 chat_id가 비어 있는 경우입니다. 봇에게 한마디 보내고 getMyChatId를 다시 실행해 숫자를 넣습니다. 둘, 토큰이나 chat_id를 붙일 때 따옴표 밖에 넣었거나 앞뒤 공백이 섞인 경우입니다. var BOT_TOKEN = '...';처럼 값이 따옴표 안에 있는지 봅니다.

한 번 편집했는데 알림이 여러 번 와요

트리거는 시트가 바뀔 때마다 돕니다. 한 줄을 칸마다 나눠 채우면 그때마다 알림이 갈 수 있습니다. 실제 주문은 폼이나 붙여넣기로 한 줄이 통째로 들어오는 경우가 많아 대개 문제가 안 됩니다. 폼으로 받는다면 트리거 유형을 양식 제출 시(On form submit)로 걸면 한 응답에 알림 한 번으로 깔끔해집니다.

알림 문구를 바꾸고 싶어요

코드에서 notifyLastRow 함수 안의 var lines = ['새 주문이 들어왔습니다']; 줄을 원하는 첫 문장으로 바꿉니다. 그 아래는 시트 제목과 값을 자동으로 붙이는 부분이라 손대지 않아도 됩니다. 고친 뒤 저장하면 다음 알림부터 바뀝니다.

토큰을 남이 보면 어떻게 되나요

그 사람이 내 봇 이름으로 아무 메시지나 보낼 수 있습니다(내 시트를 보진 못합니다). 토큰이 새어 나갔다면 텔레그램에서 @BotFather를 열어 /revoke로 옛 토큰을 무효화하고 새 토큰을 받아, 코드의 BOT_TOKEN만 바꾸면 됩니다.

여러 사람이 같이 알림을 받고 싶어요

팀 단체방을 만들고 거기에 봇을 초대한 뒤, 그 방에서 아무 말이나 한마디 보내고 getMyChatId를 다시 실행하면 방의 chat_id(보통 앞에 -가 붙는 숫자)가 찍힙니다. 그 값을 CHAT_ID에 넣으면 방 전체가 알림을 받습니다.


윈도우·맥 어디서든

이 가이드는 텔레그램 앱과 브라우저 안에서 일어납니다. 윈도우든 맥이든 화면과 순서가 같습니다. 저장 단축키만 다릅니다. 윈도우는 Ctrl + S, 맥은 ⌘ + S입니다.


이제 원하는 알림으로 바꾸기

여기까지 왔다면 시트를 텔레그램으로 잇는 흐름을 손에 익힌 것입니다. 이 틀로 다른 알림을 만듭니다. 앞의 신청 접수 웹앱으로 폼을 받고 있다면, 그 시트에 이 코드를 붙이고 트리거만 걸면 신청이 들어올 때마다 알림이 옵니다. 재고 시트라면 notifyLastRow에 "수량이 5 미만이면 보낸다"는 if 한 줄을 더해 품절 임박 알림으로 씁니다. 만드는 방법이 막히면, AI에게 "이 코드가 수량 5 미만일 때만 알림 보내게 고쳐 줘"라고 물어 받은 코드를 같은 자리에 붙이면 됩니다. 방법은 바뀌지 않습니다. 바꾸는 것은 조건과 문구뿐입니다.

태그텔레그램스프레드시트알림봇구글시트앱스스크립트자동화트리거웹훅GAS푸시알림
최종 수정: 2026-08-23
무료 AI 활용 진단 내 AI 활용 수준, 상위 몇 %일까요? 진단하면 내 점수와 지금 무엇부터 할지 알려드립니다.