1. Apps Script 컨솔 왼쪽 메뉴에서 "서비스 +" 를 눌러 Drive API 를 추가한다.
2. 코드를 아래와 같이 작성하고
3. 배포 -> 새 배포 를 한 후
4. 실행을 누른다.
function convertDocxToPdf() {
var folderId = 'myFolderID-folder의 URL 뒤쪽 끝부분임.'; // 변환할 파일이 들어 있는 폴더 ID
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByType(MimeType.MICROSOFT_WORD);
while (files.hasNext()) {
var file = files.next();
Logger.log('File name:' + file.getName());
//1. Microsoft Word 파일을 Google Docs로 변환
var resource = {
title: file.getName(),
mimeType: MimeType.GOOGLE_DOCS,
parents: [{id: folderId}]
};
var convertedDocFile = Drive.Files.copy(resource, file.getId());
//2. Google Docs 형식으로 문서를 연 후 PDF로 변환
var doc = DocumentApp.openById(convertedDocFile.getId());
var blob = doc.getBlob().getAs('application/pdf');
// 특정 폴더에 PDF 파일 저장
var folder = DriveApp.getFolderById(folderId);
var pdfFile = folder.createFile(blob.setName(convertedDocFile.getName().replace(/\.[^/.]+$/, "") + ".pdf"));
// 생성된 PDF 파일의 URL 반환
return pdfFile.getUrl();
}
}
원격호출이 가능한 appScript만들기 => doGet(e)과 filename 파라미터를 추가.
function convertDoc2PdfByFilename(filename) {
var folderId = 'myFOlderID'; // 변환할 파일이 들어 있는 폴더 ID
var folder = DriveApp.getFolderById(folderId);
// var files = folder.getFilesByType(MimeType.MICROSOFT_WORD);
var files = folder.getFilesByName(filename);
while (files.hasNext()) {
var file = files.next();
Logger.log('File name:' + file.getName());
//1. Microsoft Word 파일을 Google Docs로 변환
var resource = {
title: file.getName(),
mimeType: MimeType.GOOGLE_DOCS,
parents: [{id: folderId}]
};
var convertedDocFile = Drive.Files.copy(resource, file.getId());
//2. Google Docs 형식으로 문서를 연 후 PDF로 변환
var doc = DocumentApp.openById(convertedDocFile.getId());
var blob = doc.getBlob().getAs('application/pdf');
// 특정 폴더에 PDF 파일 저장
var folder = DriveApp.getFolderById(folderId);
var pdfFile = folder.createFile(blob.setName(convertedDocFile.getName().replace(/\.[^/.]+$/, "") + ".pdf"));
// 생성된 PDF 파일의 URL 반환
return pdfFile.getUrl();
}
}
function doGet(e) {
var filename = e.parameter.filename;
if (!filename) {
return ContentService.createTextOutput("Filename parameter missing")
.setMimeType(ContentService.MimeType.TEXT);
}
// 파일 이름을 사용하여 DOCX를 PDF로 변환하고, 생성된 PDF의 URL을 반환
var pdfUrl = convertDoc2PdfByFilename(filename);
if (pdfUrl) {
return ContentService.createTextOutput("PDF 생성됨: " + pdfUrl)
.setMimeType(ContentService.MimeType.TEXT);
} else {
return ContentService.createTextOutput("해당 이름의 파일을 찾을 수 없습니다.")
.setMimeType(ContentService.MimeType.TEXT);
}
}