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

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

Gmail은 그 자체로 이미 매우 강력한 이메일 클라이언트입니다. 필터를 사용하여 자동화를 설정하여 받은 편지함을 더 잘 정리할 수 있습니다. 그러나 고급 사용자의 경우 사용자 정의 스크립트 작성에 비해 필터 기능이 충분하지 않습니다. 이 8개의 Google 스크립트는 Gmail을 더욱 자동화할 수 있습니다.

1. X일 후 이메일 자동 삭제

이메일을 읽은 후 얼마나 유용한지 상관없이 받은 편지함에 보관하는 경우가 매우 많습니다. 이제 Google에서 공간에 제한을 두었으므로 받은편지함을 정리하고 쓸모없는 이메일을 제거하고 싶을 수 있습니다. 다음 스크립트는 “Delete Me” 레이블이 있는 이메일을 확인하고 “X”일 후에 삭제할 수 있습니다.

  • Google 계정에 로그인했는지 확인하고 Google Scripts 로 이동하여 새 프로젝트를 만듭니다.
Gmail 새 프로젝트 자동화
  • 다음 스크립트를 붙여넣고 저장합니다. delayDays받은 편지함에서 이메일 메시지를 삭제하기 전에 경과하는 일 수( 변수 )를 변경할 수 있습니다 .

function auto_delete_mails() {
var label = GmailApp.getUserLabelByName("Delete Me");
if(label == null) {
GmailApp.createLabel('Delete Me');
}
else {
var delayDays = 2; // Enter # of days before messages are moved to trash
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()<maxdate) {
threads[i].movetotrash();
}
}
}}

  • 일정에 따라 스크립트를 실행할 새 트리거를 만듭니다. “왼쪽 메뉴의 일정 아이콘 -> 트리거 -> 트리거 추가”를 엽니다.
Gmail 트리거 자동화
  • 스크립트를 매시간(또는 원할 때마다) 실행하도록 트리거 설정을 사용자 정의한 다음 아래로 스크롤하여 “저장”을 클릭하십시오.
Gmail 추가 트리거 자동화

이 스크립트가 실행되면 Gmail 계정에 “Delete Me”라는 새 레이블이 생성됩니다. 원치 않는 이메일에 이 라벨을 지정하면 스크립트에 지정된 일수가 지나면 삭제됩니다.

2. 모든 오래된 이메일 보관

이메일을 삭제하는 것보다 덜 위험한 옵션을 원하는 경우 아래 단계에 따라 이전 이메일을 모두 보관하는 스크립트를 만들 수 있습니다.

  • 다음 코드를 사용하여 새 Google 스크립트를 만듭니다.

function archiveOldEmails() {
// Get all the threads in the inbox
var threads = GmailApp.getInboxThreads();

// Loop through all the threads
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
var messages = thread.getMessages();

// Loop through all the messages in the thread
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var age = (new Date() - message.getDate()) / (1000 * 60 * 60 * 24);

// If the message is older than 30 days, archive it
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분마다 실행할 트리거를 만듭니다.
  • 선택한 수신 이메일에 “텍스트 보내기” 레이블을 자동으로 추가하는 새 Gmail 필터를 만듭니다. Gmail의 상단 검색창에서 검색 옵션 아이콘을 클릭합니다.
Gmail 2 검색 창 옵션 자동화 1
  • 받은 편지함에 중요한 이메일이 있음을 알리는 SMS 알림의 기준을 사용자 정의한 다음 “필터 만들기”를 클릭하십시오.
Gmail 2 검색 필터 자동화
  • “라벨 적용”을 선택하고 “텍스트 보내기”를 선택한 다음 “필터 만들기”를 클릭합니다.
Gmail 2 필터 보내기 텍스트 자동화

스크립트는 5분마다 받은 편지함을 스캔합니다. “Send Text” 레이블이 있는 이메일을 감지하면 즉시 Google 캘린더에 이벤트를 생성하여 SMS를 트리거합니다.

4. 이메일 요약 작성

모든 이메일을 개별적으로 읽는 대신 스크립트를 작성하여 읽지 않은 이메일에 대한 단일 이메일 요약을 만들 수 있습니다.

  • 다음 코드를 사용하여 새 Google 스크립트를 만듭니다.

function createEmailSummary() {
// Search for unread emails
var threads = GmailApp.search("is:unread");
var summary = "Unread Emails:\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";
}
}

// Search for emails with specific keywords in the subject
var threads = GmailApp.search("subject:(important meeting)");
summary += "\nEmails with keyword 'important meeting' in the subject:\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";
}
}

// You can add more search criteria here
//. ..

// Send the summary as an email
GmailApp.sendEmail("[email protected]", "Email Summary", summary);}

  • [email protected] “을 귀하의 이메일로 변경하십시오.
  • 스크립트를 매일 실행할 새 트리거를 만듭니다.
Gmail 4 요약 예 자동화

스크립트가 실행되면 아직 읽지 않은 각 유형의 이메일이 포함된 이메일이 전송됩니다. 위의 스크립트는 좋은 출발점입니다. 제목에 “중요한 회의”가 포함된 이메일의 수를 계산합니다. 원하는 검색 기준을 계산하도록 스크립트를 조정할 수 있습니다.

5. Google 드라이브에 이메일을 PDF로 저장

Google 드라이브에 보관하고 싶은 이메일이 있는 경우 Google 스크립트를 사용하여 Google 드라이브 계정에 PDF로 저장할 수 있습니다. 다음 스크립트는 이메일 스레드의 모든 메시지를 Google 드라이브에 하나의 PDF 파일로 저장합니다. 이메일에 첨부 파일이 있는 경우 폴더를 만들고 그 안에 메시지와 첨부 파일을 저장합니다.

  • 다음 코드를 사용하여 새 Google 스크립트를 만듭니다.

function save_Gmail_as_PDF() {
// Get the label "Save As PDF"or create it if it doesn't exist
var label = GmailApp.getUserLabelByName("Save As PDF");
if(label == null){
label = GmailApp.createLabel('Save As PDF');
}

// Get the threads with the label
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var subject = messages[0].getSubject();
var bodys = [];
// Loop through all messages in thread
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]);
}
}
}
// Create a Google Docs document from the message body
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();

// Convert the Google Docs document to a PDF
var blob = bodyDocFile.getAs('application/pdf');
var pdfFile = DriveApp.createFile(blob);

// If there are attachments
if(attachments.length > 0){
// Create a folder in Drive with the message subject
var folder = DriveApp.createFolder(subject);
for (var j = 0; j < attachments.length; j++) {
folder.createFile(attachments[j]);
}
// Add the PDF file of the message body to the folder
folder.createFile(pdfFile);
}
// Remove the Google Docs document from Google Drive
DriveApp.getFileById(bodyDocId).setTrashed(true);
// Remove the label from the thread
label.removeFromThread(threads[i]);
}
}

  • 그것을 저장하고 일정한 간격으로 실행되도록 트리거를 설정하십시오.
Gmail 5 저장된 이메일 PDF 자동화

이메일과 첨부파일을 Google 드라이브에 저장하려면 “PDF로 저장” 레이블을 지정하기만 하면 됩니다. 각 이메일의 본문과 보낸 사람은 각 스레드에서 가장 오래된 것부터 순서대로 표시됩니다.

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;
// If a sent thread has more than 1 email, we don’t need to followup
// because we either followed up already or they responded.
if (conversation.getMessages().length > 1) {
foundResponse = true;
}

if (!foundResponse) {
var body = "Hi, I just wanted to follow up on my previous email. If I get no reply I will assume you are not interested. \n\nBest regards,\n[Your Name]";
conversation.replyAll(body);
}
}}

  • 이 스크립트에서 몇 가지를 사용자 지정합니다.
  • startDate아주 오래된 스레드를 부활시키지 않으려면 현재 날짜에 가까운 시간으로 변경하십시오 .
  • daysAgo후속 조치를 보내기 전에 원하는 이메일 기간을 사용자 정의하도록 변경하십시오 .
  • [Your Name]귀하의 이름으로 변경하십시오 .
  • 저장하고 7일마다 실행되도록 트리거를 설정합니다.

정상적으로 이메일을 보내면 스크립트가 후속 조치를 자동으로 처리합니다.

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.
  • 스크립트를 저장하고 몇 분 또는 몇 시간마다 실행되도록 트리거를 설정합니다.
제목별로 라벨이 지정된 Gmail 7 이메일 자동화

이를 통해 특정 레이블이 있는 이메일만 확인하여 최신 상태를 유지할 수 있습니다. 이 스크립트는 대부분의 이메일에서 잘 작동하므로 단순히 이메일을 삭제하지 않아도 됩니다.

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은 기준과 일치하는 이메일을 두 개 이상의 이메일 주소로 자동으로 전달합니다.

자주 묻는 질문

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()); // All details of Ditto would be logged

Google Apps Script에 오류가 발생하면 어떻게 해야 하나요?

코드를 디버깅하여 오류를 식별하고 수정할 수 있습니다. 다행스럽게도 Google Apps Script에는 코드 문제를 해결하는 데 사용할 수 있는 디버거가 내장되어 있습니다. 이를 사용하려면 스크립트 편집기를 열고 디버그를 클릭하기만 하면 됩니다. 여기에서 중단점을 설정하고, 코드를 단계별로 실행하고, 변수를 검사하여 문제를 식별할 수 있습니다.

이미지 크레디트: Pexels . Brandon Li의 모든 스크린샷.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다