Gmail 자동화: Gmail을 자동화하기 위한 8가지 유용한 Google 스크립트

Gmail은 자체적으로 이미 매우 강력한 이메일 클라이언트입니다. 필터의 도움을 받아 자동화를 설정하여 받은편지함을 보다 잘 정리할 수 있습니다. 그러나 파워 유저에게는 필터 기능이 맞춤형 스크립트를 작성하는 것에 비해 충분하지 않습니다. 이 8가지 Google 스크립트는 당신의 Gmail을 더욱 자동화할 수 있습니다.
팁: 또 다른 쉬운 Gmail 팁을 시도해보세요: Gmail에서 자동 전달 설정하기.
목차
- X일 후 이메일 자동 삭제
- 모든 오래된 이메일 아카이브
- 중요한 이메일에 대한 SMS 알림 받기
- 이메일 요약 만들기
- 이메일을 PDF로 Google Drive에 저장
- 후속 이메일 자동 전송
- 주제 키워드에 따라 이메일 라벨 지정
- 특정 이메일을 여러 다른 주소로 전달
- 자주 묻는 질문
1. X일 후 이메일 자동 삭제
이메일을 읽은 후에도 얼마나 유용한지에 관계없이 그냥 받은편지함에 그대로 두는 경우가 많습니다. Google이 저장 공간에 한계를 두었기 때문에 받은편지함을 정리하고 쓸모없는 이메일을 없애고 싶을 수 있습니다. 다음 스크립트는 “Delete Me” 라벨이 있는 이메일을 확인하고 “X”일 후에 삭제합니다.
- Google 계정에 로그인했는지 확인하고, Google 스크립트로 가서 새 프로젝트를 만듭니다.

- 다음 스크립트를 붙여넣고 저장합니다. 이메일 메시지를 삭제하기 전에 경과하는 일 수(변수
delayDays)를 변경할 수 있습니다.
function auto_delete_mails(){
var label = GmailApp.getUserLabelByName("Delete Me");
if(label == null){
GmailApp.createLabel('Delete Me');
}
else{
var delayDays =2; // 쓰레기로 이동되기 전 몇 일 입력
var maxDate =new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var threads = label.getThreads();
for(var i =0; i < threads.length; i++){
if(threads[i].getLastMessageDate()- 스크립트를 정기적으로 실행하기 위해 새 트리거를 만듭니다. “왼쪽 메뉴의 일정 아이콘 -> 트리거 -> 트리거 추가”를 엽니다.

- 트리거 설정을 사용자 지정하여 스크립트를 매시간(또는 원하는 빈도로) 실행하게 하고, 아래로 스크롤하여 “저장”을 클릭합니다.

이 스크립트가 실행되면 Gmail 계정에 “Delete Me”라는 새 라벨이 생성됩니다. 원하지 않는 이메일에 이 라벨을 태그하면 스크립트에 지정된 횟수만큼 날짜가 지난 후 삭제됩니다.
팁: 이메일이 관리하기 어려운 것 같다면, SaneBox 리뷰를 읽고 이메일 관리를 도와줄 수 있는지 확인하세요.
2. 모든 오래된 이메일 아카이브
이메일을 삭제하는 것보다 덜 위험한 옵션을 원한다면, 아래의 단계를 따라 모든 오래된 이메일을 아카이브하는 스크립트를 생성할 수 있습니다.
- 다음 코드를 사용하여 새로운 Google 스크립트를 만듭니다:
function archiveOldEmails(){
// 받은편지함의 모든 스레드를 가져오기
var threads = GmailApp.getInboxThreads();
// 모든 스레드를 순회
for(var i =0; i < threads.length; i++){
var thread= threads[i];
var messages =thread.getMessages();
// 스레드 내의 모든 메시지를 순회
for(var j =0; j < messages.length; j++){
var message = messages[j];
var age =(new Date() - message.getDate()) / (1000 * 60 * 60 * 24);
// 메시지가 30일 이상 오래된 경우 아카이브
if(age >30){
thread.moveToArchive();
}
}
}
}- 매일 스크립트를 실행하기 위해 트리거를 생성합니다(위와 같이).
선택한 시간에 스크립트가 실행되고 이메일이 받은편지함에서 아카이브로 이동됩니다. 이러한 아카이브된 이메일은 여전히 “모든 이메일” 섹션에서 사용할 수 있습니다.
알아두면 좋은 사항: 받은편지함의 이메일에 신경 쓰지 않고 모든 것을 신속하게 정리하고 싶다면, 이 가이드를 통해 읽지 않은 모든 이메일을 읽은 것으로 표시하고 삭제하는 방법을 확인하세요.
3. 중요한 이메일에 대한 SMS 알림 받기
이 Google 스크립트는 Google 캘린더의 SMS 기능을 활용하여 중요한 이메일이 도착할 때 SMS를 전송합니다.
- 다음 코드로 새로운 Google 스크립트를 만듭니다:
function Gmail_send_sms(){
var label = GmailApp.getUserLabelByName("Send Text");
if(label == null){
GmailApp.createLabel('Send Text');
}
else{
var threads = label.getThreads();
var now =new Date().getTime();
for(var i =0; i < threads.length; i++){
var message = threads[i].getMessages()[0];
var from= message.getFrom();
var subject = message.getSubject();
CalendarApp.createEvent(subject,new Date(now+60000),new Date(now+60000),{location: from}).addSmsReminder(0);
}
label.removeFromThreads(threads);
}
}- 저장하고 매 5분마다 실행되는 트리거를 만듭니다.
- 선택한 수신 이메일에 자동으로 “Send Text” 라벨을 추가하는 Gmail 필터를 만듭니다. Gmail에서, 상단 검색 표시줄의 검색 옵션 아이콘을 클릭합니다.

- 받은편지함에 중요한 이메일이 있다는 알림을 제공할 SMS 알림 기준을 사용자 지정한 후 “필터 만들기”를 클릭합니다.

- “라벨 적용”을 체크하고 “Send Text”를 선택한 다음 “필터 만들기”를 클릭합니다.

이 스크립트는 5분마다 받은편지함을 스캔합니다. “Send Text” 라벨이 있는 이메일을 감지하면 즉시 Google 캘린더에 이벤트를 생성하여 SMS를 트리거합니다.
팁: PC에서 SMS 문자 메시지를 보내는 것도 가능합니다.
4. 이메일 요약 만들기
모든 이메일을 개별적으로 읽는 대신, 읽지 않은 이메일의 단일 이메일 요약을 생성하는 스크립트를 작성할 수 있습니다.
- 다음 코드를 사용하여 새로운 Google 스크립트를 만듭니다:
function createEmailSummary(){
// 읽지 않은 이메일 검색
var threads = GmailApp.search("is:unread");
var summary ="읽지 않은 이메일:\n";
for(var i =0; i < threads.length; i++){
var messages = threads[i].getMessages();
for(var j =0; j < messages.length; j++){
var message = messages[j];
summary += message.getFrom() + ": " + message.getSubject() + "\n";
}
}
// 특정 키워드를 포함하는 이메일 검색
var threads = GmailApp.search("subject:(important meeting)");
summary +="\n주제에 'important meeting' 키워드가 있는 이메일:\n";
for(var i =0; i < threads.length; i++){
var messages = threads[i].getMessages();
for(var j =0; j < messages.length; j++){
var message = messages[j];
summary += message.getFrom() + ": " + message.getSubject() + "\n";
}
}
// 여기에 더 많은 검색 기준을 추가할 수 있습니다
// ...
// 요약을 이메일로 전송
GmailApp.sendEmail("[email protected]","이메일 요약", summary);
}- “[email protected]”을 자신의 이메일로 변경합니다.
- 매일 스크립트를 실행하기 위해 새로운 트리거를 만듭니다.

스크립트가 실행되면 읽지 않은 이메일의 총 개수를 포함한 이메일을 전송하게 됩니다. 위의 스크립트는 “important meeting” 주제가 있는 이메일의 수를 계산하는 좋은 출발점입니다. 원하는 검색 기준에 맞게 스크립트를 조정할 수 있습니다.
5. 이메일을 PDF로 Google Drive에 저장
Google Drive에 보관하고 싶은 이메일이 있다면, Google 스크립트를 사용하여 Google Drive 계정에 PDF로 저장할 수 있습니다. 다음 스크립트는 이메일 스레드의 모든 메시지를 하나의 PDF 파일로 Google Drive에 저장합니다. 이메일에 첨부파일이 있는 경우, 폴더를 생성하고 메시지와 첨부파일을 함께 저장합니다.
- 다음 코드를 사용하여 새로운 Google 스크립트를 만듭니다:
function save_Gmail_as_PDF(){
// "Save As PDF" 라벨 가져오기 또는 존재하지 않으면 생성
var label = GmailApp.getUserLabelByName("Save As PDF");
if(label == null){
label = GmailApp.createLabel('Save As PDF');
}
// 라벨이 있는 스레드 가져오기
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var subject = messages[0].getSubject();
var bodys = [];
// 스레드 내의 모든 메시지를 순회
for(var j = 0; j < messages.length; j++){
var message = messages[j];
bodys.push({
body: message.getPlainBody(),
from: message.getFrom(),
});
var attachments = message.getAttachments();
var temp_attach = message.getAttachments();
if(temp_attach.length > 0){
for(var k =0; k < temp_attach.length; k++){
attachments.push(temp_attach[k]);
}
}
}
// 메시지 본문에서 Google Docs 문서 생성
var bodyDoc = DocumentApp.create(subject);
var bodyDocId = bodyDoc.getId();
var bodyDocFile = DriveApp.getFileById(bodyDocId);
var bodyDocBody = bodyDoc.getBody();
bodyDocBody.setText(bodys.map(obj => `From: ${obj.from}\n${obj.body}`).join('\n\n'));
bodyDoc.saveAndClose();
// Google Docs 문서를 PDF로 변환
var blob = bodyDocFile.getAs('application/pdf');
var pdfFile = DriveApp.createFile(blob);
// 첨부파일이 있는 경우
if(attachments.length > 0){
// 메시지 제목으로 폴더를 Drive에 생성
var folder = DriveApp.createFolder(subject);
for (var j = 0; j < attachments.length; j++) {
folder.createFile(attachments[j]);
}
// 메시지 본문의 PDF 파일을 폴더에 추가
folder.createFile(pdfFile);
}
// Google Docs 문서를 Google Drive에서 삭제
DriveApp.getFileById(bodyDocId).setTrashed(true);
// 스레드에서 라벨 제거
label.removeFromThread(threads[i]);
}
}- 저장하고 정기적으로 실행되도록 트리거를 설정합니다.

이메일과 그 첨부파일을 Google Drive에 저장하고 싶을 때, 간단히 “Save to PDF” 라벨로 태그하세요. 각 스레드에서 이메일의 본문과 발신자가 순서대로 표시되며, 가장 오래된 이메일부터 시작됩니다.
알아두면 좋은 사항: Google Drive 폴더에 몇 개의 파일이 있는지 확실하지 않습니까? 이 가이드를 통해 확인하는 방법을 알아보세요.
6. 후속 이메일 자동 전송
이메일에 대한 빠른 응답을 항상 받는 것은 아닙니다. 이 문제를 해결하기 위해 이메일 수신자에게 후속 이메일을 보내서 알릴 수 있습니다. 각 후속 조치를 수동으로 작성하는 대신, 스크립트를 사용하여 자동으로 전송할 수 있습니다!
- 다음 코드를 사용하여 새로운 Google 스크립트를 만듭니다:
function sendFollowupEmails(){
const startDate =new Date('2023-01-01');
const daysAgo =3;
var dateInPast =new Date();
dateInPast.setDate(dateInPast.getDate() - daysAgo);
var threads = GmailApp.search("is:sent before:" + dateInPast.toLocaleDateString() + " after:" + startDate.toLocaleDateString());
for(var i =0; i < threads.length; i++){
var conversation = threads[i];
var foundResponse = false;
// 보낸 스레드에 이메일이 1개 이상 있다면 후속이 필요 없음
// 이미 후속 이메일을 보냈거나 그들이 응답했기 때문임
if (conversation.getMessages().length > 1) {
foundResponse = true;
}
if (!foundResponse) {
var body = "안녕하세요, 이전 이메일에 대해 후속 조치를 하고 싶었습니다. 답장이 없으면 관심이 없다고 가정하겠습니다.\n\n감사합니다,\n[당신의 이름]";
conversation.replyAll(body);
}
}
}- 이 스크립트에서 몇 가지를 수정하세요:
startDate를 현재 날짜에 가까운 시간으로 변경하여 매우 오래된 스레드를 재생하지 않도록 합니다.daysAgo를 변경하여 후속 이메일을 보내기 전에 이메일이 얼마나 오래되어야 하는지 사용자 지정합니다.[당신의 이름]을 자신의 이름으로 변경합니다.
- 저장하고 매주 실행되도록 트리거를 설정합니다.
보통 이메일을 계속 작성하고, 스크립트는 후속 조치를 자동으로 처리할 것입니다.
7. 주제 키워드에 따라 이메일 라벨 지정
이메일이 쌓이지만 대부분을 삭제하고 싶지 않다면, 이 스크립트를 사용하여 이메일을 내용에 따라 라벨을 붙이고 정리할 수 있습니다.
- 다음 코드를 사용하여 새로운 Google 스크립트를 만듭니다:
function categorizeEmails(){
const emailsToGet =50;
var keywords ={
"promo": "Promotions",
"offer": "Promotions",
"discount": "Promotions",
"newsletter": "Newsletters",
"action": "Todo",
"required": "Todo",
"shipped": "Orders",
"delivered": "Orders",
"receipt": "Orders",
"invoice": "Orders"
};
var threads = GmailApp.getInboxThreads(0, emailsToGet);
for(var i =0; i < threads.length; i++){
var subject = threads[i].getFirstMessageSubject().toLowerCase();
var labels = GmailApp.getUserLabels();
var foundLabel = false;
for(var keyword in keywords){
if(subject.indexOf(keyword)!== -1){
for(var j =0; j < labels.length; j++){
if(labels[j].getName()=== keywords[keyword]){
threads[i].addLabel(labels[j]);
foundLabel = true;
break;
}
}
if(!foundLabel){
GmailApp.createLabel(keywords[keyword]);
threads[i].addLabel(GmailApp.getUserLabelByName(keywords[keyword]));
}
break;
}
}
}
}emailsToGet변수를 사용하여 영향을 받는 이메일 수 또는keywords와labels변수를 사용자 지정할 수 있습니다.- 스크립트를 저장하고 몇 분 또는 몇 시간마다 실행되도록 트리거를 설정합니다.

이를 통해 특정 라벨이 있는 이메일만 보고 모든 것을 관리할 수 있게 됩니다. 이 스크립트는 대다수의 이메일에 대해 잘 작동하며 삭제하는 것을 피할 수 있습니다.
팁: Gmail에서 여러 서명을 설정하고 다른 청중을 위해 쉽게 전환하세요.
8. 특정 이메일을 여러 다른 주소로 전달
Gmail은 다른 이메일 주소로 이메일을 전달하는 내장 방법이 있지만, 특정 기준으로 여러 이메일 주소로 이메일을 쉽게 전달할 수는 없다. 하지만 이 스크립트로 가능합니다.
- 다음 코드를 사용하여 새로운 스크립트를 만듭니다:
function emailForwarding(){
const emailsToGet =50;
var criteria =[
{
sender: "[email protected]",
subjectContains: "invoice",
forwardTo: ["[email protected]","[email protected]"]
},
{
sender: "[email protected]",
subjectContains: "urgent",
forwardTo: ["[email protected]","[email protected]"]
}
];
var label = GmailApp.getUserLabelByName("Forwarded");
if(!label){
label = GmailApp.createLabel("Forwarded");
}
var threads = GmailApp.search("is:inbox",0, emailsToGet);
for(var i =0; i < threads.length; i++){
var messages = threads[i].getMessages();
console.log('thread id:', threads[i].getId());
for(var j =0; j < messages.length; j++){
var message = messages[j];
var sender = message.getFrom();
var subject = message.getSubject().toLowerCase();
console.log('sender', sender,'subject', subject);
for(var k =0; k < criteria.length; k++){
var rule = criteria[k];
if(sender.indexOf(rule.sender)!= -1 && subject.indexOf(rule.subjectContains)!= -1){
var recipient = rule.forwardTo.join(",");
GmailApp.sendEmail(recipient, subject, message.getPlainBody(),{cc: sender});
threads[i].addLabel(label);
}
}
}
}
}- 필요한 대로 기준을 사용자 지정합니다.
- 스크립트가 몇 분 또는 몇 시간마다 실행되도록 트리거를 만듭니다.
당신의 Gmail은 기준에 맞는 이메일을 두 개 이상의 이메일 주소로 자동으로 전달합니다.
알아두면 좋은 사항: Gmail에는 휴가 중이거나 외출 중일 때 이메일에 자동으로 응답하는 내장 방법이 있습니다.
자주 묻는 질문
Google Apps Script는 무료로 사용할 수 있나요?
네, Google Apps Script는 Gmail 계정이 있는 한 무료로 사용할 수 있습니다. 그러나 사용에 대한 양이 제한되어 있으며 수십 가지 쿼터와 제한이 있습니다. Google은 언제든지 이를 변경할 수 있지만, 작성 시점에서 문서 생성, 이메일 읽기/쓰기, 스프레드시트 생성 및 트리거 총 실행 시간과 같은 거의 40가지 기능이 포함됩니다. 무료 계정은 매우 낮은 제한을 가지고 있으며, Google Workspace는 훨씬 높은 제한을 가지고 있습니다.
Google Apps Script를 사용하여 다른 서비스의 데이터에 접근할 수 있나요?
네, Google Apps Script는 Google 서비스에서만 작동하는 것이 아닙니다. UrlFetchApp와 같은 내장 클래스를 사용하여 인터넷에서 외부 비-Google 서비스의 데이터에 접근할 수 있습니다(예: Pokémon API):
var response = UrlFetchApp.fetch("https://pokeapi.co/api/v2/pokemon/ditto"); Logger.log(response.getContentText()); // Ditto의 모든 세부 정보가 기록됩니다.
Google Apps Script에서 오류가 발생하면 어떻게 하나요?
코드를 디버깅하여 오류를 식별하고 수정할 수 있습니다. 다행히도 Google Apps Script에는 여러분의 코드를 문제를 해결하는 데 사용할 수 있는 내장 디버거가 있습니다. 사용하려면 단순히 스크립트 편집기를 열고 디버그를 클릭하세요. 그곳에서 중단점을 설정하고, 코드를 한 단계씩 실행하며, 변수를 검사하여 문제를 식별하는 데 도움을 받을 수 있습니다.
이미지 제공: Pexels. 모든 스크린샷은 Brandon Li에 의해 제공됩니다.