재직증명서 발급 자동화(구글 앱스 스크립트 활용)

#2주차 과제인증

수강정보 : 사내 업무 자동화로 AI시대 살아남기 / 몽주님😀

안녕하세요. 23명 스타트업에서 운영을 맡고 있는 11기 곽민준입니다.

제가 A부터 Z까지 완성한 것은 아니지만.. 몽주님을 비롯한 여러분들의 도움으로 완성할 수 있었습니다.


현재 저희 회사는.. 사내 그룹웨어는 없으며.. 업무 협업툴로는

  • jetbrains의 space를 통한 프로젝트 관리 및 대화

  • 이슈 관리를 하고 있고, 그 외 구글 워크스페이스를 사용하고 있습니다.


몽주님😀이 첫 수업 때, 본인 회사 내 업무에 있어 불편함이 무엇인지 파악하는 것이 첫 숙제라.. 단순 반복 작업 중에, 자동화 시킬 수 있는 것이 무엇인지 생각 끝에.. 재직증명서 발급 자동화를 생각했습니다.


  1. 우선 개선 전에 비해 프로세스는 절반으로 줄었고, 시간도 10분의 1로 줄었습니다.

  • 개선 전 :

    • 직원 재직 증명서 요청 → 사업지원팀 직원이 한글 파일 양식 오픈 → 구글 스프레드 시트의 직원 정보 확인 → 한글 파일 양식 기입 → PDF 로 저장 → 메일 발송(6단계)

    • 발주처 재직 증명서 요청 → 사업지원팀 직원이 한글 파일 양식 오픈 → 구글 스프레드 시트의 직원 정보 확인 → 한글 파일 양식 기입 → PDF 로 저장 → 메일 발송(6단계)


  • 개선 후 : 직원/발주처 재직 증명서 요청 → 사업지원팀 직원이 구글 스프레드 시트에서, 직원명 선택 → 직원 본인에게 메일 전달 or 드라이버 저장(3단계)


  1. 진행 과정은..

  • 카톡방에 몽주님이 질문도 #인증으로, 인정 해준다고 하셔서


  • 구글 스프레드 직원 정보를 불러와서, 재직증명서가 자동으로 완성되고.. 메일까지도 자동으로 보내 싶다는 글을 오전에 올렸습니다.

  • 그리고.. 그날 밤 몽주님의 첨언! 감동😂

  • 그래서.. 오늘은 회사에 오전 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');}

    .

3
4개의 답글

👉 이 게시글도 읽어보세요