프로그램 (PHP,Python)

Google Gmail 수신 메일을 가공하여 외부 클라우드 서비스로 전송

날으는물고기 2024. 4. 6. 00:43

Google Gmail로 메일이 수신될 때 다른 클라우드 서비스로 데이터를 전송하는 기능을 구현하려면 여러 방법이 있습니다. 가장 일반적인 방법은 Google Apps Script, Zapier, IFTTT, 또는 클라우드 플랫폼의 API를 사용하는 것입니다. 여기에 몇 가지 방법을 소개합니다.

1. Google Apps Script 사용

  • Google Apps Script를 사용하여 Gmail에서 특정 조건에 맞는 이메일을 검색하고, 해당 이메일의 데이터를 추출하여 다른 클라우드 서비스 API를 호출하여 데이터를 전송할 수 있습니다.
  • 예를 들어, Google Drive, Google Sheets, Firebase, 또는 외부 클라우드 서비스(REST API를 지원하는 경우)로 데이터를 전송할 수 있습니다.
  • 스크립트는 GmailApp 라이브러리를 사용하여 이메일을 검색하고, HTTP 요청을 보내는 UrlFetchApp 라이브러리를 사용하여 다른 클라우드 서비스로 데이터를 전송합니다.

2. Zapier 사용

  • Zapier는 다양한 앱과 서비스를 연결하여 자동화된 워크플로우를 만들 수 있는 도구입니다.
  • Gmail과 다른 클라우드 서비스(예: Dropbox, Slack, Google Drive 등) 간에 워크플로우를 설정하여, Gmail로 새 이메일이 도착하면 자동으로 다른 클라우드 서비스에 데이터를 전송하도록 설정할 수 있습니다.
  • 사용자가 직접 코딩할 필요 없이 간단한 인터페이스를 통해 설정할 수 있는 장점이 있습니다.

3. IFTTT 사용

  • IFTTT(If This Then That)도 Zapier와 유사한 서비스로, 다양한 앱과 서비스를 연결할 수 있습니다.
  • Gmail과 연동하여 특정 조건의 이메일이 수신될 때 자동으로 다른 클라우드 서비스로 데이터를 전송하도록 설정할 수 있습니다.
  • IFTTT는 주로 개인 사용자를 위한 간단한 자동화 작업에 적합합니다.

4. 클라우드 플랫폼의 API 직접 사용

  • 클라우드 서비스 제공 업체의 API를 직접 사용하여, Gmail에서 이메일을 검색하고 필요한 데이터를 다른 클라우드 서비스로 전송하는 사용자 정의 애플리케이션을 개발할 수 있습니다.
  • 이 방법은 보다 복잡한 로직이나 특수한 요구 사항을 가진 자동화 작업에 적합합니다.

 

각 방법의 선택은 필요한 자동화의 복잡성, 개발 능력, 비용 등을 고려하여 결정해야 합니다. Zapier나 IFTTT 같은 서비스는 설정이 간단하고 즉시 사용할 수 있는 반면, Google Apps Script나 클라우드 플랫폼의 API를 사용하는 방법은 더 유연하고 강력한 사용자 정의가 가능하지만 개발 능력이 요구됩니다.

 

Google Apps Script를 사용하여 Gmail에서 메일이 수신될 때 다른 클라우드로 데이터를 전송하는 과정은 대략적으로 다음 단계로 구분할 수 있습니다. 아래 예제에서는 간단한 시나리오로, Gmail에서 특정 키워드를 포함한 메일을 검색하여 그 내용을 Google Sheets에 기록하는 방법을 소개합니다. 비슷한 방식으로 다른 클라우드 서비스에 대한 API 호출로 변경할 수 있습니다.

1. 새 Google Apps Script 프로젝트 생성

  • Google Drive에서 '새로 만들기' > '더보기' > 'Google Apps Script'를 선택합니다.
  • 새 프로젝트가 생성됩니다. 프로젝트 이름을 지정합니다.

2. 스크립트 작성

Google Apps Script 에디터에서 아래의 스크립트를 참고하여 작성합니다. 이 스크립트는 Gmail에서 'urgent'라는 단어를 포함하는 이메일을 찾아 그 제목과 날짜를 Google Sheets에 기록합니다.

function searchEmailsAndLogToSheet() {
  var sheet = SpreadsheetApp.create("Gmail Logs").getActiveSheet();
  var query = 'subject:"urgent"'; // Gmail 검색 쿼리
  var threads = GmailApp.search(query, 0, 10); // 최대 10개의 스레드 검색

  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];
      var date = message.getDate();
      var subject = message.getSubject();
      // Google Sheets에 기록
      sheet.appendRow([date, subject]);
    }
  }
}

3. 스크립트 실행 및 트리거 설정

  • 스크립트를 저장하고 실행하기 전에 Google Apps Script 에디터 상단의 '실행' 버튼을 클릭하여 searchEmailsAndLogToSheet 함수를 실행해 볼 수 있습니다.
  • 이 스크립트를 주기적으로 자동 실행하려면 에디터에서 '편집' > '현재 프로젝트의 트리거'를 선택하여 새 트리거를 추가합니다.
    • 실행할 함수를 searchEmailsAndLogToSheet로 설정합니다.
    • 이벤트 소스를 '시간 기반의 트리거'로 선택합니다.
    • 원하는 실행 주기(예: 매시간, 매일)를 설정합니다.

주의사항

  • 이메일 검색 쿼리, 저장될 데이터 형식은 스크립트에서 자유롭게 수정하여 사용할 수 있습니다.
  • Google Apps Script를 사용할 때 Google 서비스의 API 사용 한도를 고려해야 합니다. 큰 규모의 메일 데이터를 처리할 때는 한도를 초과하지 않도록 주의해야 합니다.
  • 외부 클라우드 서비스로 데이터를 전송하려면 해당 서비스의 API를 호출할 수 있도록 UrlFetchApp 클래스를 사용할 수 있습니다. 이를 위해서는 해당 클라우드 서비스의 API 문서를 참조하여 인증 방법과 요청 구조를 정확히 이해해야 합니다.

 

이 예제는 기본적인 사용법을 소개하기 위한 것이며, 실제 요구 사항에 맞게 스크립트를 수정하여 사용할 수 있습니다. Google Apps Script는 매우 유연하고 강력하여 Gmail 뿐만 아니라 Google Drive, Google Sheets, Google Calendar 등 Google 서비스와의 통합 작업을 자동화하는 데 널리 사용됩니다.

 

Gmail에서 중복된 이메일을 정리하는 몇 가지 방법이 있습니다. Gmail의 기본 기능을 사용하여 중복 메일을 정리하는 방법과, Gmail의 필터 및 서드파티 도구를 활용하는 방법입니다.

1. Gmail의 기본 기능을 사용하여 중복 메일 정리하기

Gmail 자체에는 중복된 이메일을 자동으로 제거하는 기능이 없지만, 다음과 같은 방법으로 중복된 이메일을 찾고 삭제할 수 있습니다.

중복된 이메일 검색

  1. 검색 기능 사용: Gmail의 검색창에 subject:제목 형식으로 입력하여 동일한 제목을 가진 이메일을 찾을 수 있습니다.
  2. 라벨 사용: 특정 라벨을 적용한 이메일들을 검색하고, 그 중 중복된 이메일을 수동으로 삭제합니다.

이메일 삭제

  1. 검색 결과에서 중복된 이메일을 선택하고 삭제합니다.
  2. 휴지통에서 이메일을 영구 삭제하여 메일함의 공간을 확보합니다.

2. Gmail 필터 사용

Gmail의 필터 기능을 사용하여 특정 기준에 따라 이메일을 자동으로 관리할 수 있습니다. 중복된 이메일을 필터링하여 라벨을 적용하거나 삭제하는 방법을 사용할 수 있습니다.

필터 생성

  1. Gmail 설정에서 필터 및 차단된 주소 탭으로 이동합니다.
  2. 새 필터 만들기를 클릭합니다.
  3. 중복된 이메일을 식별할 수 있는 기준(예: 제목, 발신자)을 입력합니다.
  4. 필터 만들기를 클릭한 후, 삭제 또는 라벨 적용 등 원하는 동작을 선택합니다.

3. 서드파티 도구 사용

여러 서드파티 도구들이 중복된 이메일을 자동으로 정리해주는 기능을 제공합니다.

  • Clean Email: Gmail 계정과 연결하여 중복된 이메일을 자동으로 찾아 삭제할 수 있습니다.
  • Mailstrom: 대량의 이메일을 관리하는 데 도움이 되며, 중복된 이메일을 찾아 삭제하는 기능이 있습니다.
  • Unsubscriber: 중복된 이메일을 포함하여 불필요한 이메일을 제거하는 데 유용합니다.

Clean Email 사용 예시

  1. Clean Email 웹사이트에 방문하여 계정을 생성하고, Gmail 계정과 연결합니다.
  2. Clean Email의 Smart Views 기능을 사용하여 중복된 이메일을 찾습니다.
  3. 찾은 중복된 이메일을 선택하여 삭제합니다.

요약

  1. Gmail 검색 기능과 수동 삭제를 통해 중복 메일을 정리합니다.
  2. Gmail 필터를 사용하여 특정 기준에 따라 이메일을 자동으로 관리합니다.
  3. 서드파티 도구를 사용하여 중복된 이메일을 자동으로 찾아 삭제합니다.

이 방법들을 통해 Gmail에서 중복된 이메일을 효과적으로 정리할 수 있습니다. 이미 Gmail에 수신되어 저장된 중복된 메일을 자동으로 정리하기 위해서는 서드파티 도구를 사용하는 것이 가장 효율적입니다. "Clean Email" 도구를 사용하면 중복된 이메일을 찾아 자동으로 정리해줍니다.

Clean Email 사용법

  1. Clean Email 가입 및 Gmail 계정 연결
    • Clean Email 웹사이트에 접속합니다.
    • "Sign Up"을 클릭하여 계정을 생성합니다.
    • 계정을 생성한 후, Gmail 계정과 연결합니다. 이 과정에서 Clean Email이 이메일에 접근할 수 있도록 권한을 부여해야 합니다.
  2. 중복된 이메일 찾기
    • Clean Email에 로그인한 후, 대시보드로 이동합니다.
    • "Smart Folders" 섹션에서 "Duplicates" 옵션을 선택합니다. 이 기능은 중복된 이메일을 자동으로 찾아줍니다.
  3. 중복된 이메일 정리
    • 중복된 이메일 목록이 나타나면, 검토하여 삭제할 이메일을 선택할 수 있습니다.
    • "Select All"을 선택하여 모든 중복 이메일을 선택한 후, "Trash" 버튼을 클릭하여 삭제합니다.
  4. 자동 정리 설정
    • 중복된 이메일을 정리하는 작업을 자동화하려면, "Auto Clean" 기능을 사용할 수 있습니다.
    • "Auto Clean"을 설정하여 특정 조건에 맞는 이메일을 자동으로 삭제하거나 정리하도록 설정할 수 있습니다.

Gmail 내에서의 기본 방법

서드파티 도구를 사용하지 않고 기본적으로 Gmail에서 중복된 이메일을 정리하려면, 다음과 같은 방법을 사용할 수 있습니다.

  1. Gmail 검색 기능 활용
    • Gmail 검색창에 subject:제목 또는 from:발신자 등 특정 키워드를 입력하여 중복된 이메일을 검색합니다.
    • 검색 결과에서 중복된 이메일을 수동으로 선택하여 삭제합니다.
  2. 필터 설정
    • Gmail 설정에서 "필터 및 차단된 주소" 탭으로 이동합니다.
    • "새 필터 만들기"를 클릭한 후, 중복된 이메일을 식별할 수 있는 조건을 입력합니다(예: 제목, 발신자 등).
    • 필터 생성 후, "삭제" 동작을 선택하여 필터를 저장합니다.

이 방법들을 통해 이미 저장된 중복된 이메일을 효율적으로 정리할 수 있습니다. Clean Email과 같은 도구는 시간과 노력을 절약하는 데 매우 유용합니다. n8n을 사용하여 Gmail에서 중복된 이메일을 자동으로 정리하는 워크플로우를 만들 수 있습니다. n8n은 워크플로우 자동화 도구로, 다양한 서비스와 API를 연결하여 자동화 작업을 수행할 수 있습니다.

준비 단계

  1. Gmail API 활성화
    • Google Cloud Console에서 새로운 프로젝트를 생성합니다.
    • 해당 프로젝트에서 "Gmail API"를 활성화하고 OAuth 2.0 클라이언트 ID를 생성합니다.
    • 클라이언트 ID와 클라이언트 비밀 키를 기록해 둡니다.
  2. n8n 설치
    • n8n을 로컬 서버나 클라우드에 설치합니다.
  3. n8n에 Gmail API 인증 정보 추가
    • n8n 인터페이스에서 "Credentials"로 이동하여 새로운 Gmail API 인증 정보를 추가합니다.
    • Google Cloud Console에서 생성한 클라이언트 ID와 비밀 키를 입력합니다.

워크플로우 설정

  1. Gmail 노드 추가
    • 새로운 워크플로우를 생성하고 Gmail 노드를 추가합니다.
    • 이 노드에서 "List Messages" 작업을 선택하여 받은 편지함의 이메일 목록을 가져옵니다.
  2. 중복 이메일 필터링
    • 가져온 이메일 목록을 기반으로 중복된 이메일을 식별하기 위해 "Function" 노드를 추가합니다.
    • 이 노드에서 이메일의 제목이나 내용을 기준으로 중복 여부를 판단하는 스크립트를 작성합니다. 예를 들어, 이메일의 제목을 키로 사용하여 중복을 확인할 수 있습니다.
      items = items.reduce((acc, item) => {
        const key = item.json.subject; // 이메일 제목을 키로 사용
        if (!acc[key]) {
            acc[key] = item;
        } else {
            acc[key].duplicates = acc[key].duplicates || [];
            acc[key].duplicates.push(item);
        }
        return acc;
      }, {});
      
      return Object.values(items).flatMap(item => item.duplicates || []);
  3. 중복 이메일 삭제
    • 중복된 이메일을 식별한 후, "Gmail" 노드를 다시 추가하고 "Delete Message" 작업을 설정합니다.
    • 삭제할 이메일의 ID를 입력하여 해당 이메일을 삭제합니다.
  4. 자동화 실행
    • 워크플로우를 저장하고 트리거를 설정하여 정기적으로 실행되도록 합니다. 예를 들어, 매일 한 번 실행되도록 설정할 수 있습니다.

이러한 워크플로우를 통해 n8n을 사용하여 Gmail의 중복된 이메일을 자동으로 정리할 수 있습니다. n8n의 시각적 인터페이스와 유연한 노드 구성을 통해 다양한 자동화 작업을 쉽게 설정할 수 있습니다. Gmail API 자체에는 중복된 이메일을 직접적으로 감지하거나 가져오는 기능이 없지만, API를 사용하여 이메일 목록을 가져오고, 이를 기반으로 중복 여부를 판별하는 로직을 구현할 수 있습니다.

1. Gmail API 설정

  1. Google Cloud Console에서 프로젝트 생성 및 Gmail API 활성화
    • 프로젝트 생성 후, Gmail API를 활성화합니다.
    • OAuth 2.0 클라이언트 ID 및 클라이언트 비밀 키를 생성합니다.
  2. OAuth 인증
    • n8n에서 OAuth 인증을 설정하여 Gmail API에 접근할 수 있도록 합니다.

2. n8n 설치 및 설정

  1. n8n 설치
    • 로컬 또는 서버에 n8n을 설치합니다.
  2. Gmail API 자격 증명 추가
    • n8n 인터페이스에서 "Credentials"로 이동하여 새로운 Gmail API 자격 증명을 추가합니다.
    • Google Cloud Console에서 생성한 클라이언트 ID와 비밀 키를 입력합니다.

3. n8n 워크플로우 구성

  1. Gmail 노드 설정
    • 새로운 워크플로우를 생성하고 Gmail 노드를 추가합니다.
    • 이 노드에서 "List Messages" 작업을 선택하여 받은 편지함의 이메일 목록을 가져옵니다.
    • maxResultsq 파라미터를 사용하여 검색 결과를 제한할 수 있습니다. 예를 들어, 최근 100개의 이메일만 가져오도록 설정할 수 있습니다.
  2. Function 노드 추가 및 중복 이메일 필터링
    • 가져온 이메일 목록에서 중복된 이메일을 식별하기 위해 Function 노드를 추가합니다.
    • 다음 스크립트를 Function 노드에 추가하여 이메일 제목을 기준으로 중복을 확인합니다.
      const emails = items.map(item => item.json);
      
      const uniqueEmails = {};
      const duplicates = [];
      
      emails.forEach(email => {
         const subject = email.payload.headers.find(header => header.name === 'Subject')?.value;
         if (subject) {
             if (uniqueEmails[subject]) {
                 duplicates.push(email);
             } else {
                 uniqueEmails[subject] = email;
             }
         }
      });
      
      return duplicates.map(email => ({ json: email }));
  3. Gmail 노드 추가 및 중복 이메일 삭제
    • 중복된 이메일을 식별한 후, Gmail 노드를 다시 추가하여 "Delete Message" 작업을 설정합니다.
    • 삭제할 이메일의 ID를 입력하여 해당 이메일을 삭제합니다.
  4. 자동화 실행
    • 워크플로우를 저장하고 트리거를 설정하여 정기적으로 실행되도록 합니다. 예를 들어, 매일 한 번 실행되도록 설정할 수 있습니다.

이러한 방법을 통해 Gmail API와 n8n을 사용하여 Gmail에서 중복된 이메일을 자동으로 정리할 수 있습니다. n8n의 시각적 인터페이스와 유연한 노드 구성을 통해 다양한 자동화 작업을 쉽게 설정할 수 있습니다.

728x90