Google Workspace의 문서(Google Sheets 등)를 첨부하여 메일로 발송하기 위한 App Script.
매일 손으로 수집해야 하는 데이터를 엑셀파일로 정리하여 일보고 하라는 지시. 그런데 해당 데이터는 또 혼자 수집할 수 있는게 아니라, 여럿이 각각 수집해야 함.
그래서 Google Works에 Sheets문서를 만들어 공유한 후, 각 담당에게 자기가 맡은 부분의 데이터를 채워넣으라고 했다. 그리고는 App Script를 이용하여 하루에 한 번 자동으로 해당 문서를 첨부파일로 하는 보고 메일을 발송하도록 작성.
function sendEmailWithAttachment() {
var day = (new Date()).getDay() % 7;
if (day === 0 || day === 6) { // 토요일, 일요일에 실수로 보고하지 않도록.
return;
}
var sheetId = "1q...xi3Tk"; // Google Sheets ID
var currentDate = new Date();
var formatted = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy-MM-dd");
var url = "https://docs.google.com/spreadsheets/d/" + sheetId + "/export?format=xlsx";
var params = {
method: "get",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}
};
var blob = UrlFetchApp.fetch(url, params).getBlob().setName(`File_${formatted}.xlsx`); // 첨부파일 이름
var recipientEmail = "recipient@somewhere.com"; // 수신인
var subject = "REPORT: " + formatted; // 메일 제목
var body = `일보고문서 ${formatted} 입니다. 감사합니다.`; // 메일 본문
GmailApp.sendEmail(recipientEmail, subject, body, {
cc: "cc@somewhere.com, cc2@somewhere.com", // 수신참조
attachments: [blob],
});
}
Google Sheets의 문서 아이디는 해당 문서의 URL 중간에 적혀있다.

이거 따로 뽑아주는 함수가 있긴 한데, 범용적으로 쓰려면 그렇게 하면 되겠으나… 여하튼 현재 문서의 ID를 얻으려면,
DocumentApp.getActiveDocument().getId()
를 사용하면 됨.
0개의 댓글