์คํ๋ ๋์ํธ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋น์ทํ ํํ์ ๋ณด๊ณ ์๋ ๋ฆฌํฌํธ๋ฅผ ์์ฑํ์ฌ ๊ณต์ ํ ์ผ์ด ์๊ธฐ๊ธฐ ๋ง๋ จ์ ๋๋ค. ํด๋น ์์ค๋ ์คํ๋ ๋์ํธ๋ฅผ PDF๋ก ๋ณํํ์ฌ ๋ฉ์ผ์ ์ฒจ๋ถํ์ผ๋ก ์ ๋ฌํ๋ ๋ฐฉ์์ ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ฉ์ผ ๋ณธ๋ฌธ์ html๋ก ์์ฑํ์ฌ ๋ฃ์ด์ผ ๋ณด๊ธฐ๊ฐ ์ข์ต๋๋ค. ํจ๊ป ์์๊ฐ ๋ด ์๋ค.
์ฑ์คํฌ๋ฆฌํธ ์์ฑ
๊ตฌ๊ธ ์คํ๋ ๋์ํธ์์ ํ์ฅํ๋ก๊ทธ๋จ > Apps Script ๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค.
์คํ๋ ๋์ํธ๋ฅผ PDF๋ก ๋ณํํ๊ธฐ ์์ค
//make pdf
function makeFilePDF(spreadsheet, orderAgencyName, reportDate) {
var sid = SpreadsheetApp.getActive().getId(); //ํ์ฌ ์คํ๋ ๋์ํธ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
var ssid = spreadsheet.getSheetId(); //์คํ๋ ๋์ํธ ํ์ผ์์ ์์ธ ์ํธ์์ด๋ ๊ฐ์ ธ์ค๊ธฐ
var theurl = 'https://docs.google.com/spreadsheets/d/'
+ sid //the file ID
+ '/export?exportFormat=pdf&format=pdf'
+ '&size=A4'
+ '&portrait=false'
+ '&fitw=true'
+ '&scale=4'//1= Normal 100% / 2= Fit to width / 3= Fit to height / 4= Fit to Page
+ '&top_margin=0'
+ '&bottom_margin=0.3'
+ '&left_margin=0.1'
+ '&right_margin=0.5'
+ '&sheetnames=true&printtitle=false'
+ '&pagenum=false'
+ '&gridlines=false'
+ '&fzr=true'
+ '&horizontal_alignment=CENTER' //LEFT/CENTER/RIGHT
+ '&vertical_alignment=MIDDLE' //TOP/MIDDLE/BOTTOM
+ '&gid='
+ ssid
var token = ScriptApp.getOAuthToken();
var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' + token } });
//ํน์ ํด๋ ์์ฑํด์ ์๊ธฐ๋ก ๋ณ๊ฒฝํ๋ฉด ์ข์ง ์์๊น?
var fileName = orderAgencyName + 'xxx ๋ฆฌํฌํธ' + reportDate + '.pdf';
var fileid = DriveApp.createFile(docurl.getBlob()).setName(fileName).getId();
var tempfile = DriveApp.getFileById(fileid);
var thisFile = DriveApp.getFileById(SpreadsheetApp.getActive().getId());
var folders = thisFile.getParents();
var folderId;
while (folders.hasNext()) {
var folder = folders.next();
folderId = folder.getId();
break;
}
//temp folder๋ก ์ด๋
var daforder = DriveApp.getFolderById(folderId);
tempfile.moveTo(daforder);
return tempfile;
}
์ ์๋ฅด๋ฅผ Code.gs์ ์ ์ฉํฉ๋๋ค.
์์ค์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํ์๋ฉด , ํ์ฌ ์คํ๋ ๋์ํธ์ ํ์ผ์ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ์ผ์ ํน์ ์ํธ ๊ณ ์ ๋ฒํธ๋ ๊ฐ์ ธ์ต๋๋ค. ๊ฐ์ ธ์จ ๋งํฌ๋ก pdf ํ์ผ์ ๋ง๋ค๊ธฐ ์ํด ์ด๋ ค๊ฐ์ง ์ค์ ์ ์ ์ฉํด๋ด ๋๋ค. ์ด ์ค์ ๋ค์ ๋ณดํต ์ธ์ ๋ฐฉ์์ ๋ฐ๋ฅธ ์ค์ ๊ฐ์ ๋๋ค. ๊ฐ๋ก/์ธ๋ก, ์ฌ๋ฐฑ, ๋น์จ ๋ฑ์ ๋ํ ์ค์ ์ด๋ ๊ถ๊ธํ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฒ์์ ํตํด ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ์ค์ ํ url์ OAuthToken ์ ๋ณด๋ฅผ ํตํ์ฌ ๋ณํ ํ ํด๋น ํ์ผ์ ํ์ผ๋ช ๋ฐ ํ์ฅ์๋ฅผ ์ง์ ํ์ฌ Drive์ ์์ฑํฉ๋๋ค.
๊ตฌ๊ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ์ฌ ๋ฉ์ผ ๋ณด๋ด๊ธฐ ์์ค
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค๋ช : https://developers.google.com/apps-script/reference/gmail/gmail-app
//To : ํ์ฅ๋ CC: ์ฐธ์กฐ์ From: ๋ณธ์ธ
GmailApp.sendEmail( toEmail, MailSubject , MailBody, {
from: fromMail ,
cc: CCEmail,
htmlBody: MailMessage ,
name : fromName ,
attachments: [file.getAs(MimeType.PDF)] });
๋ฉ์ผ์ ์ผ๋ฐ ํ ์คํธ๋ก ๋ฃ๊ฒ ๋๋ฉด์ space ๋ฐ ๋จ๋ฝ ๊ตฌ๋ถ์ด ์ด๋ ต์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ผญ html ํ์์ผ๋ก ์์ฑํ์ฌ htmlBody ํ๋์ ๋ฃ์ด ๋ณด๋ ๋๋ค. MimeType๋ pdf๋ก ๊ผญ ์ง์ ํด์ผ ํฉ๋๋ค. Mail์ ๊ฐ์ธ ๋ฉ์ผ์ด ์๋ ํ์ฌ ๊ณต์ฉ ๋ฉ์ผ ๋ณด๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ์ค์ ์กฐ๊ฑด์ด ํ์ํฉ๋๋ค.
ํ์ ์ฌํญ : SMTP ์ค์ ํ ํ ์ด๋ฉ์ผ ์๋ ์ฐ๊ฒฐ ํ๊ธฐ
- gmail ๊ณ์ ์์ด์ผํจ
- gmail > ์ค์ (๋งํฌ)
- ์ด๋ฉ์ผ ์ถ๊ฐ ํ ์ธ์ฆ ํ๊ณ ์๋ฃ! (์๋์ฌ์ง ์์ฐจ์ ์ผ๋ก)
์์ ๊ฐ์ด ์ค์ ์ด ๋์์ผ๋ฉด, ์ด์ ๋ ๊ตฌ๊ธ ์คํ๋ ๋ ์ํธ์์ ์คํฌ๋ฆฝํธ ๋ฒํผ์ ์ถ๊ฐํ์ฌ ๋ฉ์ผ์ ๋ณด๋ด๊ฑฐ๋, ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฑธ์ด์ ์ฃผ๊ธฐ์ ์ผ๋ก ํด๋น ์ํธ์ ๋ํ ๋ฉ์ผ์ ๋ฐ์กํฉ๋๋ค.
ํธ๋ฆฌ๊ฑฐ ์ค์ ๋ฐ ๋ฐฐํฌ
1. ํธ๋ฆฌ๊ฑฐ ์ถ๊ฐํ๊ธฐ(์๊ณ ๋ชจ์ ํด๋ฆญํ๊ธฐ)
* ํธ๋ฆฌ๊ฑฐ ์ถ๊ฐํ ์, ์ด๋ฒคํธ ์์ค ์ ํ์ ์คํ๋ ๋์ํธ → ์๊ฐ๊ธฐ๋ฐ์ผ๋ก ๋ณ๊ฒฝ ํ ๋ฆฌํฌํธ ๋ฐํ ์๊ฐ์ ๋ง๊ฒ ์ฃผ๊ธฐ๋ฅผ ์ค์ ํ์ฌ ์ ์ฅํฉ๋๋ค.
2. ๋ฐฐํฌํ๊ธฐ
Apps script์ ์์ค ์ ์ฉ์ด ๋ ์ํ๋ก ๋ฐฐํฌ ๋ฒํผ์ ๋๋ฅด๊ณ ์ค๋ช ์ ๊ธฐ์ฌํ๊ณ ๋ฐฐํฌ ํฉ๋๋ค.
ํน์๋ ๋ถ์ํ๋ค๋ฉด ๊ผญ 5๋ฒ ํ ์คํธ ํด๋ณด๊ณ ์งํํ์๊ธธ ๋ฐ๋๋๋ค. ๋ฌธ์ ์ฌํญ์ด ์์ผ์๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๊ฑฐ๋ ๋ณ๋๋ก ํฐ์คํ ๋ฆฌ ํ๋จ์ ์๋ ์นด์นด์คํก ์ฑ๋์ ์ ์ํ์ฌ ์ฑํ ์ฃผ์๋ฉด ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค.
'๋์งํธ ๊ฟํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Zendesk] ๋ฌธ์ API ์ฐ๋(export csv /json) (2) | 2022.02.03 |
---|---|
[Slack ์ฐ๋] ํน์ ์ฑ๋์ ๋ฉ์์ง ์ ์ก (0) | 2022.02.03 |
[Google app script] ์ง๋ฒ์ฃผ์์์ ๋๋ก๋ช ์ฃผ์ ๋ณํ (0) | 2022.01.31 |
๋๊ธ