#2주차 과제인증
수강정보 : 사내 업무 자동화로 AI시대 살아남기 / 몽주님😀
안녕하세요. 23명 스타트업에서 운영을 맡고 있는 11기 곽민준입니다.
제가 A부터 Z까지 완성한 것은 아니지만.. 몽주님을 비롯한 여러분들의 도움으로 완성할 수 있었습니다.
현재 저희 회사는.. 사내 그룹웨어는 없으며.. 업무 협업툴로는
jetbrains의 space를 통한 프로젝트 관리 및 대화
이슈 관리를 하고 있고, 그 외 구글 워크스페이스를 사용하고 있습니다.
몽주님😀이 첫 수업 때, 본인 회사 내 업무에 있어 불편함이 무엇인지 파악하는 것이 첫 숙제라.. 단순 반복 작업 중에, 자동화 시킬 수 있는 것이 무엇인지 생각 끝에.. 재직증명서 발급 자동화를 생각했습니다.
우선 개선 전에 비해 프로세스는 절반으로 줄었고, 시간도 10분의 1로 줄었습니다.
개선 전 :
직원 재직 증명서 요청 → 사업지원팀 직원이 한글 파일 양식 오픈 → 구글 스프레드 시트의 직원 정보 확인 → 한글 파일 양식 기입 → PDF 로 저장 → 메일 발송(6단계)
발주처 재직 증명서 요청 → 사업지원팀 직원이 한글 파일 양식 오픈 → 구글 스프레드 시트의 직원 정보 확인 → 한글 파일 양식 기입 → PDF 로 저장 → 메일 발송(6단계)
개선 후 : 직원/발주처 재직 증명서 요청 → 사업지원팀 직원이 구글 스프레드 시트에서, 직원명 선택 → 직원 본인에게 메일 전달 or 드라이버 저장(3단계)
진행 과정은..
카톡방에 몽주님이 질문도 #인증으로, 인정 해준다고 하셔서
구글 스프레드 직원 정보를 불러와서, 재직증명서가 자동으로 완성되고.. 메일까지도 자동으로 보내 싶다는 글을 오전에 올렸습니다.
그리고.. 그날 밤 몽주님의 첨언! 감동😂
그래서.. 오늘은 회사에 오전 7시 반에 도착했습니다.
앱스 스크립트 하나 하나를 이해해 나가면서, 겨우겨우.. 재직증명서 PDF 저장 기능까지 적용은 했습니다. 그런데.. 메일 적용이 난관이었습니다.
마침.. 일찍 출근하신 지나가는 개발자 분에게.. “앱스스크립트 아세요?!” , “아니요”., “그래도 한 번 봐주세요.” 라고.. 부탁을 드렸습니다.
GPT에 위 코드에서 이메일을 보낼 수 있게 요청했고, 그 코드를 넣어도 되지 않자..
개발자분도 잘 되지 않자, 머리를 싸매고 한 줄씩 테스트하면서, 코드를 수정했습니다.
그 결과.. 아래의 스크립트가 완성이 되었고..
그 결과..
아래와 같은 재직증명서 자동화 프로그램이 생성 되었습니다!<몽주님께 정말 감사 드리며, 저희 개발자분께도 큰 감사 드립니다.>
원본 코드는 아래와 같습니다
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('재직증명서 이메일 전송')
.addItem('이메일 전송', 'saveAndSendPDF')
.addItem('PDF 저장', 'sheetToPDF')
.addToUi();
}
function saveAndSendPDF() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var triggerCell = 'C4:E4'; // 트리거가 발생할 셀
var emailAddress = sheet.getRange(triggerCell).getValue(); // C4:E4 셀의 값을 이메일 주소로 사용
var getName = sheet.getRange('C2').getValue(); var sheetName = getName + ' 재직증명서'; var folderId = '1uxH1ugHAddKl9BU-QI4REsaCDSpNkblU'; // PDF를 저장할 폴더 ID를 입력하세요 // var sheet = ss.getSheetByName(sheetName);
// 시트를 PDF로 변환 var blob = sheetToPDF();
// 파일 이름 설정 var pdfName = sheetName + '.pdf';
// 폴더에 PDF 저장 var folder = DriveApp.getFolderById(folderId); var pdfFile = folder.createFile(blob).setName(pdfName);
// 이메일로 PDF 전송 var subject = '재직증명서 PDF'; var body = '재직증명서 PDF 파일을 첨부합니다.'; MailApp.sendEmail(emailAddress, subject, body, { attachments: [pdfFile] });}
function sheetToPDF() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet();
var url = 'https://docs.google.com/spreadsheets/d/' + ss.getId() + '/export?exportFormat=pdf&format=pdf' + '&size=A4' + // A4 사이즈 '&portrait=true' + // 세로 방향 '&fitw=true' + // 너비 맞춤 '&sheetnames=false&printtitle=false' + // 시트 이름, 제목 출력 안함 '&pagenumbers=false&gridlines=false' + // 페이지 번호, 그리드라인 출력 안함 '&fzr=false' + // 고정 행 출력 안함 '&gid=' + sheet.getSheetId(); // 시트 ID
var token = ScriptApp.getOAuthToken(); var response = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' + token } }); return response.getBlob().setName(sheet.getName() + '.pdf');}.