재테크 A2Z

Google Sheets + 텔레그램 알림봇 본문

재테크

Google Sheets + 텔레그램 알림봇

a2ztec 2025. 6. 28. 08:48

Google Sheets + 텔레그램 알림봇 조합은,
📈 예약매도 조건 체결 여부
📉 손절가 하락 도달 여부
🧾 현재 수익률 변화
등을 감지해서 텔레그램으로 자동 알림을 받는 아주 효율적인 방식입니다.


✅ 목표

  • Google Sheets에 실시간 TQQQ 가격을 받아오고
  • 설정한 가격 도달 시 텔레그램으로 알림 전송

🧰 준비물

  1. Google 계정 (Sheets 사용용)
  2. 텔레그램 봇 (@BotFather) 생성
  3. 텔레그램 채팅 ID 확인
  4. Google Apps Script 작성
  5. TQQQ 실시간 가격 가져오기 (GoogleFinance + 보조스크립트)

⚙️ STEP 1. 텔레그램 봇 만들기

  1. @BotFather에 접속 → /newbot
  2. 봇 이름과 사용자이름 설정
  3. API Token 받기 → 예: 123456789:ABCdefGhIjklMNopQRstUvWxYZ

⚙️ STEP 2. 채팅 ID 확인

  1. 텔레그램에서 https://t.me/your_bot_username 접속 → 아무 말이나 입력
  2. 아래 URL에 접속
bash
복사편집
  1. "chat":{"id": 뒤에 나오는 숫자가 Chat ID

⚙️ STEP 3. Google Sheets 구성

A열B열C열D열
시각 현재가 목표가 상태
06:00 81.42 88 대기 중
06:00 81.42 89 대기 중
... ... ... ...
 

⚙️ STEP 4. Apps Script 작성

Tools > Apps Script > 코드 입력:

const TELEGRAM_TOKEN = '123456789:ABCdefGhIjklMNopQRstUvWxYZ'; // 봇 토큰
const CHAT_ID = '123456789'; // 채팅 ID

function checkPriceAndNotify() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getRange("A2:D100").getValues();
  
  for (let i = 0; i < data.length; i++) {
    let nowPrice = parseFloat(data[i][1]);
    let targetPrice = parseFloat(data[i][2]);
    let status = data[i][3];

    if (status !== "매도 완료" && nowPrice >= targetPrice) {
      sendTelegram(`🔔 TQQQ 목표가 도달: ${targetPrice}달러`);
      sheet.getRange(i + 2, 4).setValue("매도 완료");
    }
  }
}

function sendTelegram(message) {
  const url = `https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=${encodeURIComponent(message)}`;
  UrlFetchApp.fetch(url);
}
 

⚙️ STEP 5. 시간 기반 자동 실행 설정

  1. Apps Script에서 → ⏰ Triggers 메뉴
  2. 함수: checkPriceAndNotify
  3. 시간 설정: 매 5분마다 실행

STEP 5. 시간 기반 자동 실행 설정 자세히 설명

Google Apps Script는 특정 함수를 정해진 시간에 자동으로 실행할 수 있는 트리거(Triggers) 기능을 제공합니다. 이 기능을 사용하여 checkPriceAndNotify 함수를 5분마다 자동으로 실행하도록 설정할 수 있습니다.

설정 방법

  1. Apps Script 프로젝트 열기: Google Sheets에서 도구(Tools) > 스크립트 편집기(Apps Script)를 클릭하여 현재 스크립트 프로젝트를 엽니다.
  2. 트리거 메뉴 접속: Apps Script 편집기 왼쪽 사이드바에 있는 알람 시계 아이콘(⏰) 모양의 트리거(Triggers) 메뉴를 클릭합니다.
    • 만약 트리거가 하나도 설정되어 있지 않다면 "아직 트리거가 없습니다. 지금 추가하세요." 또는 이와 유사한 메시지가 표시될 것입니다.
  3. 새 트리거 추가: 화면 오른쪽 하단에 있는 + 트리거 추가(Add Trigger) 버튼을 클릭합니다.
  4. 트리거 설정 구성: 새 트리거 설정 화면이 나타나면 다음과 같이 옵션을 설정합니다.
    • 실행할 함수 선택(Choose which function to run): 드롭다운 메뉴에서 checkPriceAndNotify 함수를 선택합니다.
      • 이전에 작성한 스크립트에 이 함수가 없다면 목록에 표시되지 않습니다. 스크립트가 올바르게 저장되었는지 확인하세요.
    • 이벤트 소스 선택(Choose which event source): 시간 기반(Time-driven)을 선택합니다.
      • 이는 특정 시간 간격으로 함수를 실행하겠다는 의미입니다.
    • 시간 기반 트리거 유형 선택(Select type of time-driven trigger): 분 타이머(Minutes timer)를 선택합니다.
      • 분 타이머는 지정된 분 간격으로 함수를 실행합니다.
    • 시간 간격 선택(Select minute interval): 드롭다운 메뉴에서 5분(every 5 minutes)을 선택합니다.
      • 이렇게 설정하면 스크립트가 약 5분마다 자동으로 실행됩니다.
  5. 저장: 모든 설정을 마쳤다면 오른쪽 하단에 있는 저장(Save) 버튼을 클릭합니다.

권한 승인 (최초 1회)

트리거를 처음 설정하거나 스크립트가 Sheets 데이터 또는 외부 서비스(Telegram API)에 접근해야 할 경우, Google 계정 권한 승인 요청 팝업이 나타날 수 있습니다.

  1. 계정 선택: 현재 사용 중인 Google 계정을 선택합니다.
  2. 경고 메시지 확인: "Google에서 확인하지 않은 앱"이라는 경고가 뜰 수 있습니다. 이는 개발자가 직접 만든 스크립트이기 때문에 나타나는 정상적인 메시지입니다. 고급(Advanced)을 클릭합니다.
  3. "안전하지 않은 앱으로 이동" 클릭: (프로젝트 이름)으로 이동(Go to [Project Name] (unsafe)) 링크를 클릭하여 스크립트 실행을 허용합니다.
    • 이 과정은 스크립트가 Google Sheets 읽기/쓰기 및 외부 URL 호출 권한이 필요하기 때문에 발생합니다.

🧪 실시간 가격 자동 갱신 (옵션)

  • =GOOGLEFINANCE("NASDAQ:TQQQ", "price")
    단점: 지연 가격이므로 실시간은 아님
    Yahoo Finance 크롤링 or API 연동 원하면 별도 코드 제공 가능

📌 결과

  • 예약매도 가격 도달 시마다 텔레그램으로 알림 전송
  • 알림 메시지 예: 🔔 TQQQ 목표가 도달: 88달러

p.s. 텔레그램 봇 생성방법

✅ 1단계: 텔레그램 봇 생성 (BotFather)

  1. 텔레그램에서 @BotFather 검색 후 클릭
  2. 아래 명령어 입력:
  3.  
    복사편집
    /newbot
  4. bash
  5. 봇 이름, 사용자이름(예: my_tqqq_bot)을 입력
  6. 봇이 생성되면, 아래와 같은 토큰이 제공됨:
kotlin
복사편집
✅ Use this token to access the HTTP API: 123456789:ABCdefGhIjklMNopQRstUvWxYZ

📌 이게 바로 TELEGRAM_TOKEN


✅ 2단계: 채팅 ID 확인

방법 A: 봇에게 메시지 보내고 직접 API로 확인

  1. 텔레그램 앱에서 방금 만든 봇 (@your_bot_name) 채널로 이동
  2. 아무 메시지 하나 보내기 (예: "hi")
  3. 이제 아래 주소에 브라우저로 접속:
bash
복사편집

예시:

ruby
복사편집
https://api.telegram.org/bot123456789:ABCdefGhIjklMNopQRstUvWxYZ/getUpdates
  1. 결과에서 아래처럼 "chat" 항목을 찾으세요:
json
복사편집
"chat":{"id":123456789,"first_name":"John","type":"private"}

📌 이때 "id":123456789 이 숫자가 당신의 CHAT_ID

'재테크' 카테고리의 다른 글

25년간 연복리 20% ETF 전략  (1) 2025.06.28
SCHD 계속 보유해야할까?  (0) 2025.06.28
TQQQ 매도전략  (0) 2025.06.28
현대차 차트 기반 매도 전략  (2) 2025.06.15
TIGER200 vs. RISE 200  (0) 2025.06.15