Written by
kyungsuk cho
Date published
June 10, 2023
더기와 스프: 앱스크립트 기초 워크숍
- 더기와 스프: 앱스크립트 기초 워크숍
- 준비
- 목표
- 요약
- GAS(Google Apps Script) 개념 알기
- 실습 1. 여러 메일을 동시에 보내기
- 실습2. 슬랙봇 만들어보기
- 인사이트
- 질의응답
- 기타 예제
준비
- bit.ly/slug_ss 사본 파일 만들기
- google doc link 말미에 /edit 대신 /copy 를 link로 만들면 사본 파일을 바로 만들 수 있는 링크를 만들 수 있음
목표
- 자동화 실습하기
- ‘기획적 상상력’ 가져가기
- 코드는 이해해도 좋고 아니어도 상관없음. 활용만 할 수 있으면 OK
요약
GAS(Google Apps Script) 개념 알기
- Google sheet/docs/gmail 등에 있는 데이터를 자동으로 읽고 쓰게 할 수 있음
- 확장 프로그램 > Apps script 을 누르면 해당 Sheet와 연결된 script를 만들 수 있음
- 처음 실행할 때는 권한을 승인해주어야 함 (실행 눌렀을 때 나오는 alert 창 OK 누르기)
- 그뿐만 아니라 WEB & APIs 등 외부의 다른 서비스와 연동도 가능
실습 1. 여러 메일을 동시에 보내기
- 복사한 파일에서 확장 프로그램 > Apps script 에 들어가 Email.gs 코드를 확인
function sendEmail() {
const sheet = SpreadsheetApp.getActiveSheet(); // 현재 시트 선택
const range = sheet.getDataRange(); // 범위 저장
const values = range.getValues(); // 범위 안의 '데이터 값' 저장
const rowCounts = range.getHeight() -1; //열의 개수 -> 총 보낼 메일의 개수
for(i = 1; i <= rowCounts; i++){
const reciever = values[i][0];
const subject = values[i][1];
const emailContent = values[i][2];
console.log(reciever, "/", subject, "/", emailContent);
MailApp.sendEmail({
to: reciever,
subject: subject,
htmlBody: emailContent
})
}
}
- 구글 Sheet 에서 필요한 데이터를 갖고와서 for문을 통해 필요한 데이터들을 매칭시켜서 자동 메일 발송이 가능함
- 그렇다고 모든 구성원이 script에 접근하여 실행해 사용하긴 어려울 수 있으므로, 아래와 같은 코드를 추가하면 Sheet 안에 커스텀한 버튼이 새로 생성됨. 이 버튼을 통해 모든 구성원이 똑같은 기능을 편리하게 사용할 수 있음
function onOpen(){
const UI = SpreadsheetApp.getUi();
UI.createMenu("나만의 기능")
.addItem("이메일 발송", "sendEmail")
.addToUi();
}
실습2. 슬랙봇 만들어보기
- 관리 (Administration) > 앱 관리 (Manage apps)
- 앱 디렉토리 검색 > 수신 웹후크 > 슬랙 추가 > 웹후크 URL을 미리 복사해놓기
- 복사한 파일에서 확장 프로그램 > Apps script 에 들어가 Slack.gs 코드를 확인
- 아래 코드에서 slackWebHookUrl 값을 아까 복사해놓은 URL로 붙여넣기
function sendSlackMessage() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("slack");
const range = sheet.getDataRange();
const values = range.getValues();
const slackWebHookUrl = "https://hooks.slack.com/services/........"; //자신의 웹훅으로 바꾸세요!
- 봇의 프로필 사진 등을 세팅하여 채널에 메시지를 발신할 수 있도록 저장 / 실행하기
- 이 봇을 반복적으로 돌리기 위해서 App script 사이드에 트리거 메뉴를 선택하여 트리거 추가
인사이트
- 코드를 많이 짜지 않아도 정기적으로 슬랙을 통해 받아보고 싶은 내용을 봇으로 만들어 배포할 수 있음
- 예를 들어 ‘의안정보의 입안 과정 알람봇’ 등 을 만들 수 있음
- 이전에는 이러한 기능을 기반으로 자동장부 관리 시스템을 만들었음
- 이번 달 매출, 매출원가, 판관비 등을 한 Sheet에서 볼 수 있도록 정리함
- 매월 급여를 급여명세서로 자동생성하여 메일 수신자를 만들고 pdf로 처리해서 발송할 수 있게끔 만듦
- 자동화할 수 있는 기능들을 토대로 어떤 업무를 자동화할 수 있는지 상상력을 발휘할 수 있다
질의응답
- 급여명세서 pdf로 어떻게 자동으로 만드는지
- apps script 안에 코드를 넣어두었다. 이 양식을 공유해드릴테니 한 번 확인해서 커스텀하게 해서 사용하시면 좋을 것 같다.
- 일괄 발송하면 실수가 날 수가 있으므로, 하나하나 점검할 수 있도록 confirm 기능도 만들어둠
- 어떤 언어 기반인가요?
- javascript 언어 기반입니다