본문 바로가기
IT

텔레그램 메시지 발송_3

by 모두위 2022. 10. 31.

 

지난 시간에는 계정과 봇을 만들고, 스프레드시트에서 폼을 완성했습니다.

참고 : 나에게 텔레그램 메시지 발송하기_1  ->  계정과 봇 만들기

          나에게 텔레그램 메시지 발송하기_2  ->  스프레드시트 폼 만들기

 

폼이 완성되었다면 그 속에 있는 내용을 텔레그램 봇으로 발송하도록 명령하는 코드를 집어넣어야 합니다.

 

4. 코드 편집하기(‘Apps Script’ 실행)

1) ‘Apps Script’ 실행

스프레드시트에서 내가 만든 파일을 열어 확장프로그램 탭의 Apps Script 를 선택합니다.

 

 

2) 코드 편집

Apps Script 코드 편집기에 텔레그램으로 보낼 내용을 하나하나 변수 설정하고 함수를 만들어줍니다.

먼저, myFunction() 이라는 기본함수에 API*와 메시지가 담긴 각 셀의 행열을 변수로 선언하고 발송하면 됩니다.

*API란 운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말한다.(출처 네이버 지식백과)...그렇다고 합니다.

 

인터넷을 돌아다니면서 많은 기술자료를 참고하거나, 과거에 배웠던 C언어나 자바스크립트 같은 컴퓨터언어의 초보적인 수준에서 다음과 같이 코딩해보았습니다. 이대로 복사해서 붙여넣어도 작동은 잘 될 겁니다.

 

구글시트의 탭 구성을 보면 ‘Send_message’, ‘Bible’, ‘weather’, ‘기도로 구성되었는데요,

Send_message탭은 오늘 발송된 전체 정보를 담았고,

Bible탭은 11독을 목표로 매일 읽을 성경구간을 담았고,

weather탭은 실시간 날씨정보를 입력받은 데이터를 담았고.

기도탭은 일주일간 기도해야할 내용을 담았습니다.

 

받아볼 내용을 작성자의 입맛대로 꾸미면 되겠습니다.

Send_message탭을 위한 백데이터라고 보면 됩니다.

 

코딩할 때는 몰랐는데 지금 보니 정신없네요;;

 

코드는 다음과 같습니다.

더보기

function myFunction() {

var telegramAPIaddr = 'https://api.telegram.org/bot';

 

// id, 토큰 읽기

var sheet = SpreadsheetApp.getActive().getSheetByName("send_message"); //현재 실행되고 있는 시트 선택

var chat_id = sheet.getRange('B4');

var chat_id_value = chat_id.getValues();

var token = sheet.getRange('B5');

var token_value = token.getValues();

 

// 오늘 날짜 읽기

var today = sheet.getRange('C4').getValue();

 

// 오늘 요일 읽기

var day = sheet.getRange('D4').getValue();

 

// 알림 체크 되어있으면 발송할 값(메시지) 가져와서 발송

var alrim_chk_E5 = sheet.getRange('E5');

var alrim_E5 = alrim_chk_E5.getValue();

 

var praybar = sheet.getRange('B7').getValue(); // 기도바

var pray = sheet.getRange('B8').getValue(); // 기도내용

 

if(alrim_E5 == true){

var dataB0 = sheet.getRange('B21').getValue(); //세종 기온...

var dataB1 = sheet.getRange('B10').getValue(); // -------------- 말 씀 선 포 --------------

var dataB2 = sheet.getRange('B11').getValue(); // 말씀 내용1

var dataB3 = sheet.getRange('B12').getValue(); // 말씀 내용2

var dataB4 = sheet.getRange('B13').getValue(); //-------------- 주 기 도 문 --------------

var dataB5 = sheet.getRange('B14').getValue(); // 주기도문 내용

var dataB6 = sheet.getRange('B15').getValue(); //-------------- 말 씀 읽 기 --------------

var dataB7 = sheet.getRange('B16').getValue(); // 말씀

var sendMsg_B = telegramAPIaddr + token_value + '/sendMessage?chat_id=' + chat_id_value + '&text=' + today + "(" + day + ")"+ '%0A' + dataB0 + '%0A' + dataB1 + '%0A' + dataB2 + '%0A' + '%0A' + dataB3 + '%0A' + dataB4 + '%0A' + dataB5 + '%0A' + dataB6 + '%0A' + dataB7 + '%0A' + praybar + '%0A' + pray;

UrlFetchApp.fetch(sendMsg_B);

}

} //myFunction() 함수 종료

 

//체크박스 하나로 전체 제어

function onEdit(){

var sht = SpreadsheetApp.getActiveSheet();

if(sht.getName() != "send_message") {return};

var cell = sht.getActiveCell();

var rng = cell.getA1Notation();

 

if(rng=="E5"){

if(cell.getValue()==true){

sht.getRange("A7:A16").setBackgroundRGB(255, 204, 204);

}

else if(cell.getValue()==false){

sht.getRange("A7:A16").setBackgroundRGB(255, 255, 255);

}

}

}

 

3) 코드 실행하기

 

코드가 정상이라면 아래와 같이 실행로그에 표시됩니다.

물론 ID와 토큰 정보가 올바르다면 텔레그램이 설치된 스마트폰에 메시지가 정상적으로 발송이 될 것입니다.

정상적인 실행 예시

 

코드 속에 있는 함수마다 각 기능들이 있는데 여기서는 올려드린 소스코드 속의 코멘트 정도로 하겠습니다.

 

직접 따라해보시면 쉽게(?) 이해가 가시리라 생각합니다.

스프레드시트의 폼에 있는 셀 주소를 변수로 담았기 때문에 위 코드를 그대로 복붙하실 경우 폼을 똑같이 만드시면 됩니다.

 

그럼 이것으로 3회에 걸쳐 '나에게 텔레그램 메시지 발송하기' 연재를 마치겠습니다.

'IT' 카테고리의 다른 글

텔레그램 메시지 발송_4  (0) 2022.11.02
텔레그램 메시지 발송_2  (0) 2022.10.30
텔레그램 메시지 발송_1  (0) 2022.10.30

댓글