앱스스크립트와 chatGPT로 만드는 수료증 발급 프로그램 만들기

오랜만에 앱스스크립트 콘텐츠를 제작합니다. 그 동안은 이런저런 이유로 콘텐츠 제작을 못했는데 새로운 시리즈, 인공지능과 함께 프로그램 만들기를 진행해보려고 합니다. 최근에 개발자들이 인공지능 도움을 받아서 코딩하면서 생산성이 높아졌다는 기사를 많이 접해보셨을 것 같습니다. 저와 같이 하시면서 정말 어느정도로 도움이 되는지 체험해보셨으면 좋겠습니다. 🙂

오늘 만들어볼 프로그램은 수료증 자동 발급 프로그램입니다. 강의 끝나면 수료증을 발급하는데 일일히 하나하나 이름 변경하면서 수료증 문서 만들려니 너~무 귀찮은데 이걸 자동화해보겠습니다. 들어가기에 앞서 준비사항 1. 구글 아이디로 구글 앱스스크립트 실행하실 수 있어야 해요 2. 인공지능은 chatGPT를 사용합니다(4o 버전을 사용할거라 무료여도 가능합니다.) 자! 시작해보겠습니다

프로그램 소개와 프로세스

수료증 자동 발급 프로그램은 명단 정보를 읽어와 명단의 이름, 수료증 번호에 맞게 수료증 문서를 발급하는 프로그램입니다. 이 프로그램을 구현하기 위해서는 총 2개의 파일이 필요합니다.

  1. 명단 정보가 있는 스프레드시트 파일
  2. 수료증 템플릿 파일

스프레드시트 파일에 작성된 정보를 이용해 수료증 템플릿 파일에 이름과 수료증 번호를 기입해서 새롭게 수료증 문서 파일을 만들고 output 폴더에 저장합니다.

스프레드시트 파일 내용

[수료명단] 스프레드시트 파일의 [list]시트에 1행에는 헤더 [이름, 문서번호], 2행 부터 11행까지는 데이터가 작성되어 있습니다.

앱스스크립트 스프레드시트 수료명단

템플릿 문서 내용

수료증_TEMP 문서 파일에는 이름과 문서번호가 작성될 {{문서번호}}, {{이름}}이 기입되어 있습니다. 프로그램에서 {{문서번호}},{{이름}} 부분을 찾아서 해당하는 데이터로 변경합니다.

준비하기

구글 드라이브에서 [수료증 자동화] 폴더를 만들고 스프레드시트, 템플릿 문서를 만들고 나중에 수료증 문서를 저장할 output 폴더를 생성합니다.

chatGPT 프롬프트 만들기

chatGPT에게 질의할 때는 구체적으로 작성하면 좋습니다. 코딩을 요청할 때 단순히 ‘앱스스크립트를 사용해서 수료증 자동화 프로그램을 만들어줘’보다 [입력 데이터의 형태, 기능 설명, 출력 데이터의 형태]로 구체화해서 요청하겠습니다.

  • 프로젝트 내용 알려주기
구글스프레드시트에서 명단을 불러와서 수료증 문서를 만들어주는 앱스스크립트 코드를 작성해줘
  • 입력데이터의 형태 – 스프레드시트의 내용을 알려줍니다.(테이블이 어떻게 구성되어 있는지 알려줍니다)
 '수료명단' 스프레드시트 파일의 '시트1'의 시트에 데이터가 저장되어 있고 첫 번째 행은 헤더, 1열은 이름, 2열은 문서번호
  • 기능 설명 – 프로그램 실행해야 하는 기능을 구체적으로 알려줍니다.
데이터를 이용해서 '수료증_TEMP' doc 파일의 {{문서번호}, {{이름}}에 작성해서 새로운 파일 '수료증_문서번호_이름'을 만들어줘
  • 출력 데이터의 형태
파일은 '수료증 자동화' 폴더 하위의 'output'폴더에 저장해줘
  • 합쳐서 최종 프롬프트를 만듭니다.
구글스프레드시트에서 명단을 불러와서 수료증 문서를 만들어주는 앱스스크립트 코드를 작성해줘
- '수료명단' 스프레드시트 파일의 'list'의 시트에 데이터가 저장되어 있고 첫 번째 행은 헤더, 1열은 이름, 2열은 문서번호
- 데이터를 이용해서 '수료증_TEMP' doc 파일의 {{문서번호}, {{이름}}에 작성해서 새로운 파일 '수료증_문서번호_이름'을 만들어줘
- 파일은 '수료증 자동화' 폴더 하위의 'output'폴더에 저장해줘
  • 코드 결과물
// Google Apps Script 코드
function generateCertificates() {
  // 스프레드시트 및 템플릿 파일 ID 설정
  const spreadsheetId = '수료명단 스프레드시트 파일 ID';
  const sheetName = 'list';
  const templateDocId = '수료증_TEMP Doc 파일 ID';
  const outputFolderId = '수료증 자동화/output 폴더 ID';

  // 스프레드시트 데이터 가져오기
  const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  const sheet = spreadsheet.getSheetByName(sheetName);
  const data = sheet.getDataRange().getValues();

  // 첫 번째 행은 헤더이므로 제외하고 반복 처리
  for (let i = 1; i < data.length; i++) {
    const name = data[i][0]; // 이름
    const docNumber = data[i][1]; // 문서번호

    if (!name || !docNumber) {
      continue; // 이름 또는 문서번호가 비어 있으면 건너뛰기
    }

    // 템플릿 파일 복사
    const templateDoc = DriveApp.getFileById(templateDocId);
    const newDoc = templateDoc.makeCopy(`수료증_${docNumber}_${name}`, DriveApp.getFolderById(outputFolderId));
    const newDocId = newDoc.getId();

    // 새 문서 열기 및 내용 변경
    const doc = DocumentApp.openById(newDocId);
    const body = doc.getBody();

    // 템플릿 변수 대체
    body.replaceText('{{문서번호}}', docNumber);
    body.replaceText('{{이름}}', name);

    // 문서 저장 및 닫기
    doc.saveAndClose();

    // 원본 Google Doc 삭제 (옵션)
    // DriveApp.getFileById(newDocId).setTrashed(true);
  }

  Logger.log('수료증 생성 변환 완료');
}

코드를 살펴보면 파일과 폴더의 ID를 입력하는 부분이 있네요. ID는 브라우저 상단에서 확인할 수 있습니다. 앱스스크립트에 위 코드를 붙여놓고 ID를 각각 입력해주고 실행합니다.

실행 결과

앱스스크립트를 실행하면 output폴더에 수료증 명단이 잘 저장되어 있는걸 확인해볼 수 있습니다. 어떠신가요? chatGPT를 이용하면 코딩이 엄청 간단해집니다. 다만, 구체적으로 요청해야 한다는 점! 코딩할때는 [입력 데이터의 형태, 기능 설명, 출력 데이터의 형태]를 기억하세요!

심화로 **PDF파일로 저장해보세요, 구글 독스가 아닌 슬라이드도 해보세요

댓글에 만들어보고 싶은 프로그램 달아주시면 시간 날 때 구현해서 올려볼께요!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다