Google apps script로 메일관리(키워드로 자동 삭제)

소개

스펨 메일을 포함한 불필요한 메일 관리 자동화입니다.

이전 사례글에서 Gmail 옵션에서 설정하는게 있다는 조언을 받아 시도해봤는데 안 되서 그냥 apps script로 만들어보았습니다.

진행 방법

챗GPT에 질문하고 구글 스프레드시트와 google apps script를 사용하였습니다.

전화기 화면에 나오는 한국어 단어 목록

위와 같이 테스트를 위해 일단 메일들을 보냈습니다.

제목과 본문은 같은 내용이고 사용 키워드는 강고, 깡고, 낄깔, 싹빡, 뽕뿡짠, 길가메, 도라미어, 다라바가스의 단어를 입력했습니다.

여기서 아래와 같이 제목과 본문을 나눠서 입력하고 거짓 키워드도 넣어봤습니다.

단어에는 큰 의미가 없으니 혹시나 의미 있는 단어가 있다면 오해입니다.

function deleteEmailsBasedOnSpreadsheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  for (let i = 1; i < data.length; i++) { // Skip header row
    const sender = data[i][0]; // A열: 보낸사람 이메일
    const subjectKeyword = data[i][1]; // B열: 제목 키워드
    const bodyKeyword = data[i][2]; // C열: 본문 키워드
    
    // 검색 쿼리 생성
    let queryForSubject = '';
    let queryForBody = '';
    
    if (sender) queryForSubject += `from:${sender} `;
    if (subjectKeyword) queryForSubject += `subject:${subjectKeyword} `;
    
    if (sender) queryForBody += `from:${sender} `;
    if (bodyKeyword) queryForBody += `"${bodyKeyword}" `;
    
    // 제목 검색
    if (queryForSubject) {
      const subjectThreads = GmailApp.search(queryForSubject);
      Logger.log(`Found threads for subject: ${subjectThreads.length}, query: ${queryForSubject}`);
      for (let thread of subjectThreads) {
        thread.moveToTrash(); // 제목 키워드에 해당하는 메일 삭제
      }
    }
    
    // 본문 검색
    if (queryForBody) {
      const bodyThreads = GmailApp.search(queryForBody);
      Logger.log(`Found threads for body: ${bodyThreads.length}, query: ${queryForBody}`);
      for (let thread of bodyThreads) {
        thread.moveToTrash(); // 본문 키워드에 해당하는 메일 삭제
      }
    }
  }
  
  Logger.log('Execution completed.');
}

완성 코드는 위와 같습니다.

처음 코드를 만드니 제목과 본문을 AND연산자로 체크했는데 OR연산자로 실행하라고 수정 요청했습니다.

AND 연산자로 진행 시 아래와 같습니다.

AND연산자는 그리고를 뜻하며 모든 조건을 충족해야하고

OR연산자는 또는을 뜻하며 조건 중 하나만 맞으면 됩니다.

아래는 OR연산자 실행 로그입니다.

트리거 세팅 테스트는 아래와 같이 했습니다.

트리거 설정 후

메일 삭제 된 것을 확인했습니다

결론

일단 키워드로 원치 않는 메일은 다 지울 수 있게 되었습니다. 하지만 이런 경우도 있지 않을까요? 광고 키워드를 가지고 있지만 내가 삼성 메일은 다 확인을 하고싶다. 여기까지는 진행해보지 않았지만 아마도 화이트리스트 시트를 만들어서 삭제 체크 시트에서 먼저 걸러서 나온 메일들을 화이트리스트에서 다시 한번 체크해서 삭제 할 것과 삭제 하지 말아야 할 것을 분류하면 되지 않을까 생각합니다.

감사합니다.

1
1개의 답글

👉 이 게시글도 읽어보세요