function createSlideReport(notionData) {
if (!notionData || notionData.length === 0) {
Logger.log('노션 데이터가 없습니다.');
return;
}
// 템플릿 복사 → 최종 결과 슬라이드
const templateFile = DriveApp.getFileById(SLIDE_TEMPLATE_ID);
const newFile = templateFile.makeCopy("심사평가표 결과_Slide");
const presentation = SlidesApp.openById(newFile.getId());
// 템플릿의 첫 번째 슬라이드를 기준 슬라이드로 사용
const templateSlide = presentation.getSlides()[0];
notionData.reverse().forEach((item, index) => {
// 템플릿 슬라이드를 복제해서 뒤에 붙임
let slide = templateSlide.duplicate(); // 맨 끝에 추가
// 플레이스홀더 대체
slide.replaceAllText('{{no}}', item.no);
slide.replaceAllText('{{이름}}', item.name);
slide.replaceAllText('{{팀명}}', item.teamName);
slide.replaceAllText('{{평가일}}', item.date);
slide.replaceAllText('{{창의성}}', item.score1);
slide.replaceAllText('{{효과성}}', item.score2);
slide.replaceAllText('{{구현완결성}}', item.score3);
slide.replaceAllText('{{발표능력}}', item.score4);
slide.replaceAllText('{{합계}}', item.sum);
slide.replaceAllText('{{평가의견}}', item.opinion);
});
// 마지막에 원본 템플릿 슬라이드 삭제 (안 그러면 그대로 남음)
templateSlide.remove();
presentation.saveAndClose();
Logger.log("Google 슬라이드 보고서가 생성되었습니다: " + newFile.getUrl());
// return newFile.getUrl();
return saveAsPdfInFolder(newFile)
}
참고) replacement 를 이용한 데이터 매핑
PDF로 저장하기 - PdfReport.gs
function saveAsPdfInFolder(newFile) {
const pdfBlob = newFile.getAs("application/pdf");
// 지정한 폴더(ID) 불러오기
const parentFolder = DriveApp.getFolderById(DRIVE_FOLDER_ID);
// "pdf" 하위 폴더 찾기 (없으면 생성)
let pdfFolder;
const subFolders = parentFolder.getFoldersByName("pdf");
if (subFolders.hasNext()) {
pdfFolder = subFolders.next(); // 이미 있으면 그대로 사용
} else {
pdfFolder = parentFolder.createFolder("pdf"); // 없으면 새로 생성
}
// pdf 폴더 안에 PDF 저장
const pdfFile = pdfFolder.createFile(pdfBlob).setName(newFile.getName() + ".pdf");
Logger.log("PDF 파일이 생성되었습니다: " + pdfFile.getUrl());
return pdfFile.getUrl();
}